繁体   English   中英

在Spring Batch中更新FlatFileItemReader之后的文件

[英]Update file after FlatFileItemReader in Spring Batch

我目前在Spring Batch作业中进行以下处理:

  • FlatFileItemReader读取CSV文件
  • 处理器做一些工作
  • FlatFileItemWriter创建读取文件的镜像,但更新文件以反映处理

我不想写入新文件,但是我想更新在处理过程中正在读取的相同文件。

我的问题是,Spring是否有一种典型的方法来使用FlatFileItemReader,然后在运行时在处理器中每行更新同一文件?

谢谢你的帮助。

您始终可以在春季批处理中编写自定义编写器,就像下面的示例一样。 您在哪里读取数据,将文件形成到内存中,然后使用所需的数据更新同一文件。

https://github.com/pkainulainen/spring-batch-examples/tree/master/spring/src/main/java/net/petrikainulainen/springbatch/custom/in

不仅如此,FlatFileItemReader还不是线程安全的。 当然,有一些实现线程安全的技巧,但是使用此类技巧不是一个好习惯,这对于创建自定义编写器总是很好的。

简短的答案是不,SB不允许您覆盖正在读取的文件。

更好的做法是编写一个中间文件,然后执行删除/重命名。

编写一个临时文件不是一件坏事,特别是如果您正在使用巨大的输入文件并且OutOfMemoryException即将来临; 此外,如果删除/重命名过程失败,则使用临时文件还可以使您的步骤可重新启动,并允许您手动检索已翻译的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM