使用Spring批量读取#开头的文件内容
Read file content which start with # using Spring Batch
我有一个非常简单的 Spring 批处理应用程序,它读取多个文件并将其写入一个文件。我的项目在所有情况下都运行得非常好,除非我的文件中有一行以“#”开头。我的 reader 没有读到那一行。问题是上层系统将发送每行以#开头的文件:(
有没有人遇到过类似的问题,如何解决。
提前致谢..
我的分词器配置
<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>
如果第一行始终是“#”,您可以通过将此 属性 添加到 itemReader (FlatFileItemReader) 中来跳过以读取文件的第一行:
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
我有一个非常简单的 Spring 批处理应用程序,它读取多个文件并将其写入一个文件。我的项目在所有情况下都运行得非常好,除非我的文件中有一行以“#”开头。我的 reader 没有读到那一行。问题是上层系统将发送每行以#开头的文件:(
有没有人遇到过类似的问题,如何解决。
提前致谢..
我的分词器配置
<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>
如果第一行始终是“#”,您可以通过将此 属性 添加到 itemReader (FlatFileItemReader) 中来跳过以读取文件的第一行:
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