今天就跟大家聊聊有关java检验ftp服务器中文件是否存在的方法,相信大部分人都还不知道这个技巧,因此给大家总结了以下内容,希望大家阅读完后可以有所收获。
项目工作中,需要检验ftp服务器中指定文件是否存在,在网上查阅了相关资料,可以通过ftpClient类进行实现。
具体实现代码:
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检验ftp服务器中文件是否存在方法的详细内容了,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注亿速云行业资讯!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。