java中如何检验ftp服务器中指定文件是否存在
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快速入门