Java FTPClient 大量数据传输的问题(未解决)

Posted 别惹星爷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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次 都获取不到文件列表数据

 

 

存在扫描错误/扫描不到结果的问题 导致对应传输结果少数据。

 特此记录。

以上是关于Java FTPClient 大量数据传输的问题(未解决)的主要内容,如果未能解决你的问题,请参考以下文章

FTP主动模式与被动模式,及java FTPClient模式设置

Java中FTPClient上传中文目录中文文件名乱码问题解决方法好用

java FTPClient 上传文件 0kb 问题

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!

使用 org.apache.commons.net.ftp.FTPClient 保护 FTP

java ftp