繁体   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