我的项目需要从一个ftp上读取文件列表,然后进行判断后继续处理。
最开始使用的是这样的语句
FTPFile[] ftpfiles = ftp.list();
文件数多就直接卡死。也不报超时之类的。
后来改用
FTPListParseEngine engine = ftpUtil.ftp.initiateListParsing();
while(engine.hasNext()){
FTPFile[] files = engine.getNext(25);
//......
}
好了很多,但是有时候还是会卡死。而且这个卡死跟文件个数还没关系了。
目前无法确认卡死现象是出在initiateListParsing()这一句还是在engine.getNext(25)这句。
不知道各位有没有什么好办法,能让列出文件如果长时间得不到结果就往下继续?
多谢。
最开始使用的是这样的语句
FTPFile[] ftpfiles = ftp.list();
文件数多就直接卡死。也不报超时之类的。
后来改用
FTPListParseEngine engine = ftpUtil.ftp.initiateListParsing();
while(engine.hasNext()){
FTPFile[] files = engine.getNext(25);
//......
}
好了很多,但是有时候还是会卡死。而且这个卡死跟文件个数还没关系了。
目前无法确认卡死现象是出在initiateListParsing()这一句还是在engine.getNext(25)这句。
不知道各位有没有什么好办法,能让列出文件如果长时间得不到结果就往下继续?
多谢。
文件数多就直接卡死。服务器上有多少文件?如果真的太多,从服务器上想想办法,建子目录,放不同的文件............
FTPListParseEngine engine = ftpUtil.ftp.initiateListParsing();
while(engine.hasNext()){
FTPFile[] files = engine.getNext(25);
这样的写法,但是现在看起来,这样的写法有时候也会卡住。而这个时候服务器上根本没多少文件。最多也就是500左右的样子。
只是有一个地方比较担心,因为用了inner class,导致外边儿用的FTPClient声明成了final的。有点儿小担心这个FTPclient资源就一直不释放了。