我有一个非常简单的Spring Batch应用程序,可以读取多个文件并将其写入一个文件。我的项目在所有情况下都可以正常工作,除非文件中的行以“#”开头。我的读者没有读那行。问题是上层系统将向下发送文件,每行以#:(
是否有人面临类似的问题以及如何解决。
提前致谢..
我的tokenizerconfig
<bean id="accountDataTokenizer" class="org.springframework.batch.item.file.transform.PatternMatchingCompositeLineTokenizer">
<property name="tokenizers">
<map>
<entry key="#ACCOUNT*" value-ref="headerRecordTokenizer" />
<entry key="*" value-ref="defaultLineTokenizer" />
</map>
</property>
</bean>
最佳答案
FlatFileItemReader
可以设置标识已注释掉的行的字符串。这是通过FlatFileItemReader#setComments(String[] prefixes)
配置完成的。因此,在您的情况下,您可以按以下方式配置FlatFileItemReader
:
@Bean
public FlatFileItemReader reader() {
FlatFileItemReader reader = new FlatFileItemReader();
...
reader.setComments(new String[] {"#"});
return reader;
}
您可以在文档中阅读有关
FlatFileItemReader
和此方法的更多信息:https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/file/FlatFileItemReader.html