linux下使用commons-net ftp的总结
commons-net3.0是apache公司的开源jar包, 我使用它来对一台linux中文操作系统电脑进行ftp连接, 几经修改后, 总结如下: 1. 操作系统的配置 在ftpClient.login(..)成功后, 调用 ftpClient.configure(new FTPClientConfig(ftpClient.getSystemType())); 2.中文乱码问题的解决 ftpClient = new FTPClient(); ftpClient.setControlEncoding("GBK"); 3.FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态的解决 在执行FTPClient.listFiles()或者FTPClient.retrieveFile()方法前调用ftpClient.enterLocalPassiveMode(); 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据.为什么要这样做呢,ftp server可能每次开启不同的端口来传输数据,但是在linux上,安全限制,可能某些端口没有开启,就出现阻塞.原文链接http://lgclf.blog.163.com/blog/static/384452222011913114428161/ 4.listFiles()返回为空的解决 一般是ftp服务器(主要是小型机)的操作系统不同语言环境的时间格式造成的,在中文环境下,文件或文件夹的时间格式为"m月d日 hh:mm"或"yyyy年m月 d",而E文环境下时间格式为"MMM d yyyy"或"MMM d HH:mm",于是,在中文环境下,ftp包中的FTPTimestampParserImpl类将时间字符串Date化时抛异常,commons-net包不支持中文. import java.text.ParseException; /** /** |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |