edtftpj.jar實現FTP功能

公司采用edtftpj.jar實現FTP功能,并封裝了一部分方法,例如幾種上傳下載的模式,其他操作還是得自己寫。本文主要記錄目錄相關的三個方法。

  1. 創建目錄
    創建目錄,有一個條件:目錄不存在
    /**
     * 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);
            }
        }
    }
  1. 刪除目錄
    刪除目錄,有兩個條件:
  • 目錄存在
  • 目錄下無文件
    /**
     * 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);
            }
        }
    }
  1. 檢查文件是否存在
    /**
     * 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來判斷目錄是否存在的不嚴謹


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容