Apache FtpClient的使用

解决FTP连接与文件传输问题
本文介绍了解决FTP连接卡死及下载文件损坏的方法,包括设置FTP客户端为被动模式和二进制文件类型,提供了Java代码示例。

遇到的问题:

  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种

    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的文件类型

    1. ASCII_FILE_TYPE --默认
    2. BINARY_FILE_TYPE

    在传输内容是ASCII码文本时,文件的内容可能会被调整造成文件损坏,而BINARY类型会保证文件内容不被改变

转载于:https://my.oschina.net/zjoschina/blog/683038

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值