使用FlatFileItemWriter将数据写入InputStream

时间:2018-05-10 15:58:53

标签: spring spring-boot amazon-s3 spring-batch compositeitemwriter

我正在尝试将数据写入InputStream而不是文件。

我的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]

可以采取哪些措施来纠正这个问题?或者还有其他方法可以实现吗?

这样做的目的是通过 S3Client 将流发送到 AWS S3 ,这比创建文件实例并上传它更为舒适。

1 个答案:

答案 0 :(得分:0)

使用FlatFileItemWriter您将无法直接写入Outputstream,它只会将内容写入输出物理文件。

如果需要,您可以使用输出文件进一步传输数据。