我目前在Spring Batch作业中进行了以下处理:
我不想写入新文件,但我想更新处理期间正在读取的同一文件。
我的问题是,Spring中是否有一个典型的方法来使用FlatFileItemReader,然后在运行时在处理器中每行更新同一个文件?
感谢您的帮助。
答案 0 :(得分:1)
您总是可以在春季批处理中编写自定义编写器,就像下面的示例一样。从文件中将数据读入内存,然后使用您想要的数据更新同一文件。
不仅仅是FlatFileItemReader不是线程安全的。当然有一些黑客可以实现线程安全但不是使用这种黑客的好习惯,它总是很好地创建自定义编写器。
答案 1 :(得分:0)
简短回答是否定的,SB不允许您覆盖您正在阅读的同一文件。
更好的实践是编写一个中间文件,然后执行删除/重命名。
写一个临时文件并不是一件坏事,特别是如果你正在处理庞大的输入文件并且OutOfMemoryException即将来临;如果删除/重命名过程失败,还可以使用临时文件使您的步骤可以重新启动,并允许您手动检索已翻译的文件。