Spring Batch FlatFileItemWriter不会将数据写入文件

时间:2018-01-05 12:50:26

标签: file spring-batch filewriter

我是Spring Batch应用程序的新手。我正在尝试使用FlatFileItemWriter将数据写入文件。挑战是应用程序在给定路径上创建文件,但现在将实际内容写入其中。

以下是与代码相关的详细信息:

List<String> dataFileList : 此列表包含我要写入文件的数据

FlatFileItemWriter<String> writer = new FlatFileItemWriter<>();
writer.setResource(new FileSystemResource("C:\\Desktop\\test"));
writer.open(new ExecutionContext());
writer.setLineAggregator(new PassThroughLineAggregator<>());
writer.setAppendAllowed(true);
writer.write(dataFileList);
writer.close();

这只是在适当的位置生成文件,但内容没有写入文件。

我错过了什么吗?非常感谢帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

这不是使用Spring Batch Writer和writer数据的正确方法。你需要先声明Writer的bean。

  • 定义Job Bean
  • 定义步骤Bean
  • 在步骤
  • 中使用您的Writer bean

看看以下示例:

https://github.com/pkainulainen/spring-batch-examples/blob/master/spring-boot/src/main/java/net/petrikainulainen/springbatch/csv/in/CsvFileToDatabaseJobConfig.java

https://spring.io/guides/gs/batch-processing/

答案 1 :(得分:1)

您可能需要强制同步到磁盘。来自https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/file/FlatFileItemWriter.html的文档,

setForceSync

public void setForceSync(boolean forceSync)

Flag to indicate that changes should be force-synced to disk on flush. Defaults to false, which means that even with a local disk changes could be lost if the OS crashes in between a write and a cache flush. Setting to true may result in slower performance for usage patterns involving many frequent writes.

Parameters:
    forceSync - the flag value to set