Неправильное чтение байтов во время передачи по FTP в Spring Batch
Я работаю над проектом, в котором мне нужно эффективно передавать данные (любой файл) с одной конечной точки (HTTP, FTP, SFTP) на другую. Я хочу использовать функцию параллелизма и параллелизма SpringBatch в Job. В моем случае один файл будет одним заданием. Итак, я пытаюсь прочитать файл (с любым расширением) с ftp(запущенного локально) и записать его на тот же ftp в другой папке.
У моего читателя есть:
FlatFileItemReader<byte[]> reader = new FlatFileItemReader<>();
reader.setResource(new UrlResource("ftp://localhost:2121/source/1.txt"));
reader.setLineMapper((line, lineNumber) -> {
return line.getBytes();
});
А у Writer есть:
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), а в случае отсутствия / повреждения байтов видеофайла, поскольку видео не воспроизводится в месте назначения.
Что я делаю не так или есть лучший способ передать файл (независимо от его расширения).