公司采用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來判斷目錄是否存在的不嚴謹