您的位置:首页 > 编程语言 > PHP开发

FTP Client enterLocalPassiveMode

2017-03-15 16:20 435 查看
















在项目中使用commons-net-3.0.1.jar实现FTP文件的下载,在windows xp上运行正常,但是放到linux上,却出现问题,程序运行到

FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。

另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。

详解list 和listFlile:

首先调用list()方法的话,返回的是一个String类型的字符串数组,它返回的是dir目录下一级的所有文件的目录,但它是以字符串的形式存在,然而java并不会识别该字符串类型的目录,因为java不确定该string是否是一个文件目录,或者还是只是一个数字或者其他类型的对象,只能简单的将它显示出来

然后调用listFile()方法的话,返回的是一个文件类型的文件数组,返回的也是dir目录下一级的所有文件的目录,但与string类型不同的是,java可以自动识别文件类型的对象,知道返回的是一个File类型的对象,所以可以调用相应的方法进行递归遍历,而String 类型可能是因为系统没有配备相应的方法,所以不能做判断是否是目录,并且进行递归遍历的操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: