Как использовать SimpleBinaryBufferedReaderFactory в SpringBatch для чтения данных в байтах

#spring-batch #spring-batch-stream

#пакет spring-batch #spring-batch-stream

Вопрос:

Я хочу прочитать данные с помощью SimpleBinaryBufferedReaderFactory, может у кого-нибудь есть какой-либо фрагмент кода или ссылка, где я могу понять работу.

Я скептически отношусь к тому, как сообщить читателю, когда заканчивается фрагмент. Как и в случае текстового файла, в каждой строке был символ конца, который считывался LineMapper, но мои данные не содержат конечной строки. Я хочу завершить фрагмент при прохождении некоторого байта.

Как сообщить читателю, когда его фрагментировать, и получить байты для каждого фрагмента.

Комментарии:

1. Независимо от Spring Batch, каков ваш вклад и чего вы пытаетесь достичь?

2. @Mahmoud Ben Hassine, мой ввод — видеофайл, я хочу прочитать этот видеофайл в байтах.

3. Что такое элемент в вашем случае? Если у вас есть один видеофайл, использование шага, ориентированного на фрагмент, для меня не имеет смысла (каким будет элемент в этом случае?). Если у вас несколько видеофайлов, то элемент может быть одним видеофайлом, в этом случае вы можете использовать ItemReader<File> , например.

4. @Mahmoud Ben Hassine, да, у меня есть несколько видеофайлов, НО я беру по одному видеофайлу за раз как одно ЗАДАНИЕ, и здесь элемент будет иметь определенное количество байтов []. Вот почему я делаю шаг, ориентированный на фрагменты. FlatFileItemReader<byte[]> reader = new FlatFileItemReader<>(); reader.setResource(new UrlResource(url)); Итак, я могу получить доступ к видеофайлу в байтах, но читатель ожидает LineMapper(), и к этой части я отношусь скептически. Как сообщить line mapper, когда его нужно вырезать. (В качестве средства отображения строк возьмите строку String, а здесь у меня нет String.

5. @MahmoudBenHassine Если я это сделаю: reader.setLineMapper(new LineMapper<byte[]>() { @Override public byte[] mapLine(String line, int lineNumber) throws Exception { return line.getBytes(); }}); Он отлично работает с текстовым файлом, но когда мой ввод — это видеофайл, он не работает. Файл, созданный в пункте назначения, в два раза больше входного файла.