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

相关文章
相关标签/搜索