Неправильное чтение байтов во время передачи по 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), а в случае отсутствия / повреждения байтов видеофайла, поскольку видео не воспроизводится в месте назначения.

Что я делаю не так или есть лучший способ передать файл (независимо от его расширения).

0 ответов

Другие вопросы по тегам