Java FTPClient 大量数据传输的问题(未解决)
业务需要 需要将一个存储的目标文件里的文件全部拷贝到另一个存储里面去,保持文件结构。
目前采用 org.apache.commons.net.ftp包下相关类来达到ftp连接 获取文件目录信息,拷贝文件等功能
由于需要拷贝的存储数据很多,会达到100W+的文件数量,在获取文件目录信息是遇到了问题。
在获取目标文件夹下文件列表是 会遇到返回不到后者返回数据不对的情况,在数据量越大的文件 发生的可能性越高。
private FTPFile[] getFileListTryTimes(FTPClient ftpClient, String dir) throws Exception {
ftpClient.enterLocalPassiveMode();
FTPClientConfig ftpCfg = new FTPClientConfig("com.iflytek.ibk.file.transfer.util.ftp.UnixFTPEntryParser");
ftpClient.configure(ftpCfg);
FTPFile[] files = ftpClient.listFiles(dir);
if (files.length == 0) {
//重试多次次 偶现读取文件夹读取不到数据问题
for (int i = 0; i < 10; i++) {
ftpClient.enterLocalPassiveMode();
files = ftpClient.listFiles(dir);
log.error("获取文件列表 目录:{} ,长度为:{} ,重试次数:{}", dir, files.length, i);
if (files.length > 0) {
break;
}
}
}
if (files.length == 0) {
log.error("========== path:{} scan nothing ==========", dir);
}
return files;
}
第一次请求 重试6次返回结果 文件列表长度22
第二次请求 重试2次返回结果文件列表长度2
第三次请求 重试10次 都获取不到文件列表数据
存在扫描错误/扫描不到结果的问题 导致对应传输结果少数据。
特此记录。