Bootstrap

retrievefile文件字节为0_java ftp retrieveFile 较大文件丢失内容

FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);

ftp.configure(conf);

发现有时候成功有时候失败(有时候只下载了1.8M就返回true了)

后来又设置了ftp.setDataTimeout(300 * 1000);

ftp.setReceiveBufferSize(1024 * 1024);

ftp.setBufferSize(1024 * 1024);

试了几次没有发现只下载了部分(比如1.8M)的问题了,后续再继续观察

20190919更新

部署到正式环境发现CKS的ftp下载还是有下载不完全问题,我又改了一下程序,判断下载下来的文件大小和ftp上的文件大小是不是size相等,不相等就不删除,等待下次重新下载。如果是zip文件还可以判断一下是否是能够解压的zip再删除。具体代码如下

public static boolean downloadFile(String ftpOdmPath, Integer port, OdmInfo odmInfo, String downloadLocalPath){

boolean downloadStatus = false;

FTPClient ftp = new FTPClient();

ftp.setControlEncoding("UTF-8");

try {

int reply;

ftp.setDefaultTimeout(30 * 1000);

ftp.setConnectTimeout(30 * 1000);

ftp.setDataTimeout(300 * 1000);

FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);

ftp.configure(conf);

logger.info("start to connect ftp server");

ftp.connect(odmInfo.getFtpserver(), port);// 连接FTP服务器

logger.info("connect ftp server success");

ftp.login(odmInfo.getFtpusername(), odmInfo.getFtppwd());// 登录

//设置ftp为被动模式,解决有时候ftp会卡住问题

ftp.enterLocalPassiveMode();

ftp.setReceiveBufferSize(1024 * 1024);

ftp.setBufferSize(1024 * 1024);

logger.info("login ftp server success");

reply = ftp.getReplyCode();

logger.info("reply======"+reply);

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

;