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

2020-03-16  本文已影响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快速入门

上一篇下一篇

猜你喜欢

热点阅读