Запись данных в InputStream с помощью FlatFileItemWriter - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь записать данные в InputStream, а не в файл.

Расширяется класс My Writer FlatFileItemWriter

Я вижу, FlatFileItemWriter<> имеет возможность записать данные в InputStream

Я настраиваю ресурс вот так

setResource(new InputStreamResource(inputStream));

Я получаю следующие ошибки

org.springframework.batch.item.ItemStreamException: Could not convert resource to file: [InputStream resource [resource loaded through InputStream]]
at org.springframework.batch.item.file.FlatFileItemWriter.getOutputState(FlatFileItemWriter.java:384) ~[spring-batch-infrastructure-3.0.8.RELEASE.jar:3.0.8.RELEASE]
at org.springframework.batch.item.file.FlatFileItemWriter.open(FlatFileItemWriter.java:322) ~[spring-batch-infrastructure-3.0.8.RELEASE.jar:3.0.8.RELEASE]

Caused by: java.io.FileNotFoundException: InputStream resource [resource loaded through InputStream] cannot be resolved to absolute file path
at org.springframework.core.io.AbstractResource.getFile(AbstractResource.java:114) ~[spring-core-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.batch.item.file.FlatFileItemWriter.getOutputState(FlatFileItemWriter.java:381) ~[spring-batch-infrastructure-3.0.8.RELEASE.jar:3.0.8.RELEASE]

Что можно сделать, чтобы исправить это? Или есть другой способ реализовать это?

Целью этого является отправка потока на AWS S3 через S3Client , что удобнее, чем создание экземпляра файла и его загрузка.

1 Ответ

0 голосов
/ 12 мая 2018

Используя FlatFileItemWriter, вы не сможете напрямую записать в Outputstream, он только записывает содержимое в выходной физический файл.

Вы можете использовать выходной файл для дальнейшей потоковой передачи данных, если это необходимо.

...