FTPClient.changeWorkingDirectory()无法进入中文目录
来源:互联网 发布:沉迷网络 大学生 事例 编辑:程序博客网 时间:2024/06/08 15:29
问题描述:如题
lib库:apache commons-net库,ftp应用
常见场景:递归遍历ftp服务器文件列表,切换工作路径(即ftp中的cd命令)
问题表现:能够正常进入纯英文路径;无法进入中文目录
原因分析:查看commons-net源码。
方法定义:
@return
public boolean changeWorkingDirectory(String pathname) throws IOException
{
return FTPReply.isPositiveCompletion(cwd(pathname));
}
1,返回boolean类型,暗示这个操作是可能失败,失败后工作路径不改变。而一般我们使用这个lib方法时,都不做成功判断。
2,实际调用FTPClient.cwd(String path)方法
问题本质:
1,从英文无问题,中文有问题,说明是命令的编码导致,即我们送中文路径的ftp命令编码是错误的,真正正确的编码应该是服务器端的编码
2,查看源码可知,查找我们送的编码和实际正确的编码:调用changeWorkingDirectory()方法使用的编码为FTPClient.setControlEncoding()所设置的编码,而系统默认为
public static final String DEFAULT_CONTROL_ENCODING = "ISO-8859-1";
3,如果没有显示调用setControlEncoding方法,则使用默认系统编码,而默认编码是不会有问题的
4,为了获取不会乱码的中文路径名,调用setControlEncoding("GBK");改变了编码,导致问题
解决方法:
改变调用pathname的编码
changeWorkingDirectory(new String(pathname.getBytes(),FTP.DEFAULT_CONTROL_ENCODING));
- FTPClient.changeWorkingDirectory()无法进入中文目录
- Matlab for Mac中文目录无法进入的解决方法
- FTPClient上传 中文目录、中文文件名乱码问题
- 关于FTPClient操作文件后无法变更目录的问题。
- sun.net.ftp.FtpClient 中文目录乱码问题解决
- 【Java】解决FTPClient上传中文目录出现中文名乱码问题
- java-FTPClient-ftp 上传文件、创建目录(支持中文目录、文件名)
- shell脚本无法进入指定目录
- FTPClient中文乱码处理
- FtpClient中文乱码问题解决
- FTPClient 删除中文文件
- ftpClient.makeDirectory(path) 一直返回false,无法创建目录的问题
- Appach FTPClient 遍历服务器目录文件,文件名奇数中文乱码 UTF-8 GBK ISO-8859-1
- FTPClient下载文件及目录
- 解决 FtpClient 类无法导入
- 解决 FtpClient 类无法导入 .
- windows下进入DOS命令无法切换目录
- Linux中文环境快速进入$HOME目录"桌面"的办法
- jquery.view-api
- 常用正则表达式
- gcc的返回值
- Oracle体系结构及备份(九)——sga-large_pool
- PeopleSoft HCM Fundamentals: Multi-Currency
- FTPClient.changeWorkingDirectory()无法进入中文目录
- 会声会影X4和IPHONE的MOV格式问题
- The import com.google cannot be resolved解决方法
- Ubuntu软件安装
- jquery.lang.helper-api
- COCOS2D-X 2.1.3 锁屏后永久黑屏或者崩溃(少数手机的现象)
- 用vs命令提示符来使用 Installutil.exe来安装和卸载Windows服务
- Struts2中tamcat启动中出现的问题 解决办法
- UIToolbar,UINavigationBar,UITabBar,UIBarButtonItem,UITabBarItem自定义方法总结