我正在做一个项目,我必须有效地将数据(任何文件)从一个端点(HTTP、FTP、SFTP)传输到另一个端点。我想使用 Job 的 springBatch 并发和并行功能。就我而言,一份文件就是一份工作。所以,我正在尝试从 ftp(本地运行)读取文件(任何扩展名)并将其写入不同文件夹中的相同 ftp。
我的阅读器有:
FlatFileItemReader<byte[]> reader = new FlatFileItemReader<>();
reader.setResource(new UrlResource("ftp://localhost:2121/source/1.txt"));
reader.setLineMapper((line, lineNumber) -> {
return line.getBytes();
});
作家有:
URL url = new URL("ftp://localhost:2121/dest/tempOutput/TransferTest.txt");
URLConnection conn = url.openConnection();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
for (byte[] b : bytes) { //I am getting List<byte[]> in my writer
out.write(b);
}
out.close();
如果是文本文件,所有内容都显示在一行中(省略 nextLine 字符),如果视频文件字节丢失/损坏,因为视频没有在目的地播放。
我做错了什么或者有更好的方法来传输文件(不管它的扩展名)。