首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring批处理中未终止的双引号

Spring批处理中未终止的双引号
EN

Stack Overflow用户
提问于 2011-10-12 10:29:16
回答 2查看 8.8K关注 0票数 4

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

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

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

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 16:42:46

如果这些文件没有真正的引号(2x引号字符),您可以使用spring论坛changing the quote character for the DelimitedLineTokenizer中的解决方案

代码语言:javascript
复制
            <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <property name="quoteCharacter" value="@" />
                </bean>
            </property>
票数 2
EN

Stack Overflow用户

发布于 2014-03-27 22:23:30

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

代码语言:javascript
复制
import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;

    public class CustomDelimitedLineTokenizer extends DelimitedLineTokenizer {

        @Override
        protected boolean isQuoteCharacter(char c) {
            return false;
        }

    } 

这样,DelimitedLineTokenizer就无法识别引号字符。当然,如果我们需要这个功能,那么这个解决方案是不可采用的,但是我认为它比建议的只对问题进行排序而不是解决问题的解决方案更好。希望它能帮助到一些人。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7734632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档