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

4862bace7c554ee5b81cdb343adf433b.png

检验思路:

首先需要连接“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

*/

public static boolean isFTPFileExist(String filePath,String user,String passward,String ip,int port){

FTPClient ftp = new FTPClient();

try {

// 连接ftp服务器

ftp.connect(ip, port);

// 登陆

ftp.login(user, passward);

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

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

ftp.disconnect();

return false;

}

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(new String(dir.getBytes("GBK"),FTP.DEFAULT_CONTROL_ENCODING));

// 检验文件是否存在

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

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

return false;

}

if(is != null){

is.close();

ftp.completePendingCommand();

}

return true;

} catch (Exception e) {

e.printStackTrace();

}finally{

if(ftp != null){

try {

ftp.disconnect();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return false;

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值