我正在处理的批处理应用程序从分隔的文本文件中读取和处理行。应用程序使用FlatFileReader
读取分隔的文本文件,
test.txt
( aa|bb|cc|vv|nn|mm|ff|gg|ee|"rr|gg|jj||||ii| )
但问题是文件中的某些数据有双引号,我需要用双引号处理数据。
不幸的是,弹出批处理中的FieldSet
方法是在双引号具有单个字符串后读取字符串。即使有两个或三个双引号,它抛出异常我的程序抛出异常。
例外:
ArrayIndexOutOfBoundsException: Array index out of range,
mapping.DefaultFieldSet.readAndTrim(DefaultFieldSet.java).
任何人遇到这个问题,如果是这样,那么适当的解决方案是什么?
遗憾的是,操作数据本身并不是一种选择。我尝试在每个双引号之前添加一个转义字符,但无论如何都会抛出异常。
非常感谢任何帮助。
我已将下面的属性标记添加到我的DelimiterLineTokenizer然后问题已解决,但有时我收到错误“ item.DefaultItemFailureHandler - 读取时遇到错误”, “引起: org.springframework.batch.core.JobInterruptedException:JobExecution中断。“
<Property name="lineTokenizer">
<beanclass="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="quoteCharacter" value="@" />
</bean>
</property>
非常感谢任何帮助。
我目前正在使用spring批量版本1.1.2,我无法用单双引号处理数据(我的意思是只有一个双引号)。我得到的例外是: “ quartz.SimpleThreadPoolTaskExecutor - 执行Runnable时出错: org.springframework.batch.core.UnexpectedJobExecutionException:作业执行中意外检查的异常 “
“ org.springframework.batch.core.JobInterruptedException:JobExecution被中断。 在org.springframework.batch.core.job.SimpleJob.execute “ 再次操纵数据不是一种选择。我见过很多其他帖子,但目前还没有人使用春季批次1.1.2。版本升级也不是选项。 任何帮助非常感谢。