簡體   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