FTPClient 批量文件下载 总结。

目标:从FTP客户端批量读取数据文件,并存入数据库中。

方法: 

使用org.apache.commons.net.ftp.client.FtpClient 来读取文件。

 使用jpa来存储。

 

遇到问题:

1、通过 ftpclient.

retrieveFileStream(filename)读取文件流有的为空。

解决方法:这个有好几个原因,在网上查到有很多解决方法,但是在我下载200个文件的时候,每个方法都不能完全解决。

总结一下,我所做的改动。

1、ftpclient每次调用retrieveFileStream方法后,必须显示的关闭 InputStream ,然后调用

ftpClient.completePendingCommand()方法。如果不调用方法,会出现不可预估的错误(如:下一次输入流可能为空)

2、在调用listFiles之前,调用ftpClient.enterLocalPassiveMode();方法,在每次下载完之后,

调用ftp.sendCommand("ls");以此来重置超时时间。

预防FTP连接超时,导致文件读取不全。否则的话,可能会在调用retrieveFileStream()方法后,程序假死,过一会会报连接异常,

你可能感兴趣的:(javaweb)