#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(); }});
Он отлично работает с текстовым файлом, но когда мой ввод — это видеофайл, он не работает. Файл, созданный в пункте назначения, в два раза больше входного файла.