edtftpj.jar实现FTP功能
2017-06-19 本文已影响0人
胖胖的半山兄
公司采用edtftpj.jar实现FTP功能,并封装了一部分方法,例如几种上传下载的模式,其他操作还是得自己写。本文主要记录目录相关的三个方法。
- 创建目录
创建目录,有一个条件:目录不存在
/**
* Description: 创建目录 <br>
*
* @author xxx<br>
* @taskId <br>
* @param ftpIp <br>
* @param userName <br>
* @param password <br>
* @param fileDir <br>
*/
public void createFtpDir(String ftpIp, String userName, String password, String fileDir) {
FileTransferClient ftp = new FileTransferClient();
try {
ftp.setRemoteHost(ftpIp);
ftp.setUserName(userName);
ftp.setPassword(password);
ftp.connect();
// 判断目录是否存在
if (!checkDirExist(ftp, fileDir)) {
ftp.createDirectory(fileDir);
}
}
catch (Exception e) {
logger.error(e);
}
finally {
try {
ftp.disconnect();
}
catch (Exception e) {
logger.error(e);
}
}
}
- 删除目录
删除目录,有两个条件:
- 目录存在
- 目录下无文件
/**
* Description: 删除目录 <br>
*
* @author xxx<br>
* @taskId <br>
* @param ftpIp <br>
* @param userName <br>
* @param password <br>
* @param fileDir <br>
*/
public void deleteFtpDir(String ftpIp, String userName, String password, String fileDir) {
FileTransferClient ftp = new FileTransferClient();
try {
ftp.setRemoteHost(ftpIp);
ftp.setUserName(userName);
ftp.setPassword(password);
ftp.connect();
// 判断目录是否存在
if (checkDirExist(ftp, fileDir)) {
ftp.changeDirectory(fileDir);
// 删除所有文件 再删除目录
String[] list = ftp.directoryNameList();
for (int i = 0; i < list.length; i++) {
String remoteFileName = list[i];
ftp.deleteFile(remoteFileName);
}
ftp.deleteDirectory(fileDir);
}
}
catch (Exception e) {
logger.error(e);
}
finally {
try {
ftp.disconnect();
}
catch (Exception e) {
logger.error(e);
}
}
}
- 检查文件是否存在
/**
* Description: 检查文件是否存在<br>
*
* @author xxx<br>
* @taskId <br>
* @param ftp <br>
* @param fileDir <br>
* @return <br>
*/
public boolean checkDirExist(FileTransferClient ftp, String fileDir) {
boolean isExist = false;
int index = fileDir.lastIndexOf("/");
String offerCode = fileDir.substring(index + 1);
String PFileDir = fileDir.substring(0, index + 1);
FTPFile[] files = null;
try {
ftp.changeDirectory(PFileDir);
files = ftp.directoryList();
}
catch (FTPException e) {
logger.error(e);
}
catch (IOException e) {
logger.error(e);
}
catch (ParseException e) {
logger.error(e);
}
for (FTPFile ftpFile : files) {
if (offerCode.equals(ftpFile.getName())) {
isExist = true;
break;
}
}
return isExist;
}
本文主要意图在于纠正原本代码用 ftp.directoryList(fileDir).length != 0来判断目录是否存在的不严谨