簡體   English   中英

Spring Batch FlatFileItemWriter - 輸出自定義

[英]Spring Batch FlatFileItemWriter - output customization

我需要生成具有以下要求的 CSV 文件:

  • 每個字段都用雙引號括起來
  • 雙引號用反斜杠轉義
  • 反斜杠用反斜杠轉義

輸入:

  • 字段1
  • Field2With\Backslash"DoubleQuotes"And|Pipe
  • 字段3

預期輸出:

"Field1"|"Field2With\\Backslash\"DoubleQuotes\"And|Pipe"|"Field3"

是否有可能獲得這樣的輸出?

最好的解決方案是在 DelimitedLineAggregator 的子類中實現引用和轉義。

基本上,您只想在編寫字段之前對其進行處理。 你可以用這兩種方法

假設此方法處理您的字段

public String escape(String str) {
    str = "\"" + str + "\"";
    str = str.replace("|", "\\|");
    str = str.replace("\\", "\\\\");
    return str;
}

1 - 在處理器期間處理它- 首選

@Override
public A process(B b) throws Exception {
    A a = new A();
    //Process b to a...    

    a.setField1(escape(a.getField1)); //For each fields
    return a;
}

2 - 在自定義 Writer 中寫入之前對其進行處理

public class EscapeFlatFileItemWriter<A> extends FlatFileItemWriter<A> {

    @Override
    public void write(List<? extends A> items) throws Exception {
        for (A a : items) {
            a.setField1(escape(a.getField1)); //For each fields
        }
        super.write(items);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM