Spring Batch中未终止的双引号

我是Spring Batch的新手,我遇到了一个问题。

我正在处理的批处理应用程序从分隔的文本文件中读取和处理行。 我已将应用程序配置为使用FlatFileReader来读取分隔的文本文件,但问题是正在读取的某些数据中包含双引号。 当FlatFileReader遇到单个双引号时抛出FlatFileParseException,但是当存在两个双引号时不抛出。

有没有人遇到过这个问题,如果有的话,什么是正确的解决方案? 不幸的是,操纵数据本身并不是一种选择。 我尝试在每个双引号之前添加一个转义字符,但无论如何都会抛出exception。

任何帮助将不胜感激。

如果文件没有真正的引号(2x引号字符),你可以使用spring论坛中的解决方案来更改DelimitedLineTokenizer的引号字符

     

我遇到了同样的问题。 然而,所提出的解决方案不是最佳解决方案。 如果您的数据中没有合适的引号字符怎么办? 遗憾的是,我们并不总能控制输入数据,预处理它们通常不是一个好主意。 探索DelimitedLineTokenizer源代码我决定采用这个解决方案,我将与此答案分享。 它需要覆盖一个类,但是我们完全删除了引号字符问题。

 import org.springframework.batch.item.file.transform.DelimitedLineTokenizer; public class CustomDelimitedLineTokenizer extends DelimitedLineTokenizer { @Override protected boolean isQuoteCharacter(char c) { return false; } } 

这样,DelimitedLineTokenizer无法识别引号字符。 当然,如果我们需要这个function,那么这个解决方案是不可采用的,但我认为它比提议的解决问题而不是解决它更好。 希望它会帮助某人。