美文网首页
java中如何检验ftp服务器中指定文件是否存在

java中如何检验ftp服务器中指定文件是否存在

作者: 小人物不说大话 | 来源:发表于2020-03-16 20:36 被阅读0次

    java中如何检验ftp服务器中指定文件是否存在

    检验思路:

    首先需要连接“ftp”服务器,然后设置文件类型为二进制,并设置编码格式,接着提取绝对地址的目录及文件名,最后检验指定文件是否存在即可。

    推荐java相关视频教程:java视频教程

    示例代码如下:

    import org.apache.commons.net.ftp.FTP;

    import org.apache.commons.net.ftp.FTPClient;

    import org.apache.commons.net.ftp.FTPReply;

    /**

    *  检验指定路径的文件是否存在ftp服务器中

    * @param filePath--指定绝对路径的文件

    * @param user--ftp服务器登陆用户名

    * @param passward--ftp服务器登陆密码

    * @param ip--ftp的IP地址

    * @param port--ftp的端口号

    * @return

    */

    publicstaticboolean isFTPFileExist(String filePath,String user,String passward,String ip,int port){

            FTPClient ftp = newFTPClient();

            try{

        // 连接ftp服务器

                ftp.connect(ip, port);

                // 登陆   

                ftp.login(user, passward);

               // 检验登陆操作的返回码是否正确

                if(!FTPReply.isPositiveCompletion(ftp.getReplyCode())){

                    ftp.disconnect();

                    returnfalse;

                }

                ftp.enterLocalActiveMode();

                // 设置文件类型为二进制,与ASCII有区别

                ftp.setFileType(FTP.BINARY_FILE_TYPE);

                // 设置编码格式

                ftp.setControlEncoding("GBK");

                // 提取绝对地址的目录以及文件名

                filePath = filePath.replace("ftp://"+ip+":"+port+"/", "");

                String dir = filePath.substring(0, filePath.lastIndexOf("/"));

                String file = filePath.substring(filePath.lastIndexOf("/")+1);

                // 进入文件所在目录,注意编码格式,以能够正确识别中文目录

                ftp.changeWorkingDirectory(newString(dir.getBytes("GBK"),FTP.DEFAULT_CONTROL_ENCODING));

                // 检验文件是否存在

                InputStream is = ftp.retrieveFileStream(newString(file.getBytes("GBK"),FTP.DEFAULT_CONTROL_ENCODING));

                if(is == null || ftp.getReplyCode() == FTPReply.FILE_UNAVAILABLE){

                    returnfalse;

                }

                if(is != null){

                    is.close();

                    ftp.completePendingCommand();

                }

                returntrue;

            } catch(Exception e) {

                e.printStackTrace();

            }finally{

                if(ftp != null){

                    try{

                        ftp.disconnect();

                    } catch(IOException e) {

                        e.printStackTrace();

                    }

                }

            }

            returnfalse;

    }

    推荐java相关文章教程:java快速入门

    相关文章

      网友评论

          本文标题:java中如何检验ftp服务器中指定文件是否存在

          本文链接:https://www.haomeiwen.com/subject/eavoehtx.html