ftpclient 指定远端路径_FTPClient 中文路径问题

使用commons-net-2.0.jar包进行FTP操作

使用FTPClient下载文件时,如果路径中有中文无法下载,将路径

转码为iso-8859-1后,可以下载

还有一种方式,再new FTPClient() 后,可以设置编码,

ftpClient = new FTPClient();

ftpClient.setControlEncoding(GBK); //不能在connect,login之后设置

ftpClient.connect(ip, port);

ftpClient.login(userName, passWord);

但一定要在创建时设置,不能在连接、登录后再设置,否则不生效

查看源码得知

FTPClient 继承FTP,FTP 继承 SocketClient,

所以ftpClient调用方法connect()时,会调用_connectAction_()方法,如果还没有没置编码,

getControlEncoding()会默认使用ios-8859-1,

所以必需在connect前完成编码设置

FTP在_connectAction_()方法时使用设置的编码

protected void _connectAction_()

throws IOException

{

super._connectAction_();

this._controlInput_ = new BufferedReader(new InputStreamReader(this._socket_.getInputStream(), getControlEncoding()));

this._controlOutput_ = new BufferedWriter(new OutputStreamWriter(this._socket_.getOutputStream(), getControlEncoding()));

__getReply();

if (FTPReply.isPositivePreliminary(this._replyCode))

__getReply();

}

FTP 继承 SocketClient,connect()时调用_connectAction_()

public void connect(InetAddress host, int port)

throws SocketException, IOException

{

this._socket_ = this._socketFactory_.createSocket();

this._socket_.connect(new InetSocketAddress(host, port), this.connectTimeout);

_connectAction_();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值