首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >FlatFileParseException Spring batch

FlatFileParseException Spring batch
EN

Stack Overflow用户
提问于 2015-03-11 19:00:45
回答 1查看 12.2K关注 0票数 3

当我在作业配置中使用FlatFileItemReader时,我得到平面文件解析异常。

实际上它工作得很好,但对于最近的文件,它抛出了错误。

代码语言:javascript
复制
org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 1 in resource=[URL [file:/prod/users/cdi/crh537/Java_All/input/xaaaaa]], input=[16910203315393417SEVAN Q DANG18711 PARK GROVE LNDALLASTX7528751224609645044438000VANVETTE98@YAHOO.COM586404562MAR CL197311192013042504Closed (zero balance DDA)220PUSA]

主要区别是当前文件记录包含一些特殊字符,如@和()。

下面的代码行抛出错误。使用的分隔符是^A (linux)

代码语言:javascript
复制
16^A123^A2323232^ADD^SWAN D REE^A123 MMM STRRET^A^ADALLAS^ATX^A2222^A^A^A^A^A^A^A^A^A^A434343434^A23232^A^AABC@ABC.COM^A586404562^A^A^AMAR^A ^ACL^A121212^A20130425^A04^AClose^A^A220^A^A^AP^AUSA^A

以下是读卡器配置。

代码语言:javascript
复制
<bean id="masterFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">

        <property name="resource" value="#{stepExecutionContext['fileResource']}" />

        <property name="lineMapper">
            <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
                <property name="lineTokenizer">
                    <bean
                        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                        <property name="delimiter" value="${file.delimiter}"/>
                        <property name="names" value="filed1,field2,...field39" />
                    </bean>
                </property>
                <property name="fieldSetMapper">
                    <bean class="com.batch.SrcMasterFieldSetMapper" />
                </property>
            </bean>
        </property>

    </bean>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 22:32:28

我猜你的档案里有隐藏的字符。您可以按照this link说明验证文件中是否包含字符以及包含哪些字符。

这个问题可以帮助你选择正确的分隔符的值\001 delimiter issues。按照建议,您可以尝试传递"\u0001"而不是^A

更新:

实际错误是在打印整个堆栈跟踪时记录中找到的令牌数不正确:预期为39实际40

这是因为记录/行中的最后一个字段后面跟着分隔符和$,而不仅仅是$,所以有一个额外的标记。

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

https://stackoverflow.com/questions/28984839

复制
相关文章

相似问题

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