Spring 使用FlatFileItemWriter将数据写入InputStream

Spring 使用FlatFileItemWriter将数据写入InputStream,spring,spring-boot,amazon-s3,spring-batch,compositeitemwriter,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

我试图将数据写入
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,这比创建文件实例并上传文件更方便。

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


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

InputStream
是用来阅读的,不是用来写的。谢谢。但是有没有办法将资源设置为流呢?好的,但是直接发送流的原因是为了避免创建中间文件。所以我想我必须创建一个中间文件。老实说,在我的一个项目中,我也在寻找一种方法,在使用FileItemWriter时不创建临时文件。但是如果你想一想,SpringBatch是为处理大量数据而设计的,它对平面文件编写器的工作方式是,在每个批处理步骤执行之后,内存中的数据会立即写入外部物理平面文件,而不是一个接一个地作为流。它打开执行上下文,从内存写入所有数据并关闭它。这样,上一步或区块的内存中就没有任何内容,它可以继续下一步。好的。谢谢。