ftpClient.listFiles(path)报错连接超时

登陆ftp后切换ftp路径的代码
FTPFile[] fs = null;
FTPClient ftpClient = null;
ftpClient =
getFTPClient(ftpip, ftpuser,ftppwd,new Integer(ftpport).intValue());
boolean isNo = ftpClient.changeWorkingDirectory(catalog);
if(isNo){
System.out.println("WorkDir>>"+ftpClient.printWorkingDirectory());
fs = ftpClient.listFiles();
if(fs!=null && fs.length>1){
for(int i = 0; i < fs.length; i++){
if(fs[i].getName().equals(fileName)){//获取到需要的文件后下载到本地
File localFile = new File(localPath+"/"+fs[i].getName().toString());
OutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(fs[i].getName().toString(), is);
is.close();
}
}
}
}

在本地用ftp工具可以连接ftp,用这账号也可以在目标路径下上传下载都没问题;
用同样的代码,连接另外一个ftp进行测试时候可以正常遍历文件并下载到本地;
因为ftp工具可以连接此ftp并进行下载,所以我想应该不是账号的问题,也不知道是ftp的设置问题还是代码上有问题,求指点

System.out.println("WorkDir>>"+ftpClient.printWorkingDirectory())的结果:
WorkDir>>/aaa/bbb/ccc/ddd,此路径正确无误
现在当程序跑到 fs = ftpClient.listFiles();这一步需要遍历该路径下的所有文件的时候,报错,报错信息如下:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
....
求指点!!!

ftpClient.listFiles(path)

看下源码才知道,他里面创建了一个新的连接,端口是随机的,所以需要开通服务器到ftp地址所有端口的策略。
温馨提示:内容为网友见解,仅供参考
无其他回答

ftpClient.listFiles(path)报错连接超时
ftpClient.listFiles(path)看下源码才知道,他里面创建了一个新的连接,端口是随机的,所以需要开通服务器到ftp地址所有端口的策略。

FTPClient类的listFile()卡住了,啥原因啊
这个方法要和ftp服务器通讯,执行list命令,因此如果网络不通、服务器没登陆等都可能导致调用阻塞、出错等,你手工ftp登陆服务器试一下。

急!ftpClient.listFiles() SocketTimeoutException: Accept timed out...
是不是连接没有正确关闭,或者对连接数,或者连接ip什么的有限制。这个提示就是说连接超时了啊。设置了超时时间?吧设置去了?看看这个,有帮助。http:\/\/bbs.csdn.net\/topics\/20145879#r_achor

Ftp.listFiles()报错NoSuchMethodError,如何解决?
原因:服务端将连接关闭了(可能发生了异常),但客户端还在接收数据。总结产生原因,在服务端\/客户端单方面关闭连接的情况下,另一方依然以为 tcp连接仍然建立,试图读取对方的响应数据,导致出现 Software caused connection abort: recv failed的异常.因此在receive数据之前,要先判断连接状态.通过inputstream的a...

...下载时 FTPFile[] fs = ftp.listFiles(); 总报下面那个错 为什么...
也可直接点“搜索资料”搜索整个问题。 ftpclient ftpfile fs ftp.listfiles 搜索资料 本地图片 图片链接 代码 提交回答 匿名 回答自动保存中你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)为你推荐:...

...ff[] = ftpClient.listFiles()处一直提示空指针异常错误,是怎么回 ...
boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port); \/\/如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);\/\/登录 reply = ftp.getReplyCode(); if (!FTPReply.is...

使用java通过ftp下载文件,ftpClient.listFiles获取不到当前路径下的文件...
回答:File dir=new File(".");\/\/当前路径是项目文件夹,是src外面而不是里面 File[]files=dir.listFiles(new FileFilter(){ @Override public boolean accept(File arg0) { return arg0.isFile(); } }); System.out.println("有文件"+files.length+"个");

执行ftpclient.listfiles(path)时,文件名中如果带有中括号就无法找到文...
这是因为Java中中括号用于数组索引,需要转义才能用在字符串内。在这里中括号[]应改为\\[\\]。如下代码:new File("text\/info\\[creeper\\].txt");

ftp获取不到文件目录,但是登录是成功的。 java
不知道你用的哪个.jar?commons-net.jar包中可以用 ftpClient.listFiles(pathName);返回值是个FTPFile[],jdk里也有访问ftp的类,用过感觉不太好用,好像中文名称的文件会出现乱码,不太记得怎么用了.如果还取不到ftpClient.changeWorkingDirectory(path);可以试试这个,在查下面的目录 ...

ftpClient.listFiles 获取的目录总数不对
在linux系统下面使用ftpClient.listFiles(dir)出现两个根目录 .\/ 和 ..\/ 是正常的,可以在取文件的时候判断isFile再取

相似回答
大家正在搜