Apache FtpClient的使用

遇到的問題:

  1. 鏈接上ftp服務器以後,卡死,沒有任何響應
  2. 下載下來的壓縮文件老是報錯,壓縮包被損壞

解決方案:

  1. 將ftpClient設置爲 PASSIVE_LOCAL_DATA_CONNECTION_MODE 模式
  2. 將ftpClient設置爲FTP.BINARY_FILE_TYPE
public static void main(String[] args) throws IOException {
        FTPClient ftp = new FTPClient();
        ftp.connect("xxx", 111);
        ftp.login("xxx", "xxx");
        System.out.println("Connected to " + ftp + ".");
        System.out.print(ftp.getReplyString());
        int reply = ftp.getReplyCode();

        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
        }
        ftp.enterLocalPassiveMode();
        ftp.setFileType(FTP.BINARY_FILE_TYPE);

        copyFiles("", "D:/test", ftp);
    }

知識積累

  1. FtpClient的鏈接方式有4種java

    1. ACTIVE_LOCAL_DATA_CONNECTION_MODE --默認
    2. PASSIVE_LOCAL_DATA_CONNECTION_MODE
    3. ACTIVE_REMOTE_DATA_CONNECTION_MODE
    4. PASSIVE_REMOTE_DATA_CONNECTION_MODE

    按主體分爲兩大類,一類是用於client與server之間的通訊(帶LOCAL),一類是用於server與server間的通訊(帶REMOTE) 按方式分爲兩大類,一類是主動模式,一種是被動模式。主動模式的意思在API中的說明是在創建了鏈接以後,若是server端有新的數據,server端會主動鏈接client端發送數據。 被動模式,就是在鏈接的這一刻就告訴server要與client創建起鏈接來傳輸數據服務器

  2. FtpClient的文件類型code

    1. ASCII_FILE_TYPE --默認
    2. BINARY_FILE_TYPE

    在傳輸內容是ASCII碼文本時,文件的內容可能會被調整形成文件損壞,而BINARY類型會保證文件內容不被改變server

相關文章
相關標籤/搜索