使用Spring Batch读取以#开头的文件内容

时间:2016-04-13 20:45:29

标签: java spring spring-batch file-read

我有一个非常简单的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>

                           

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果第一行总是&#34;#&#34;您可以通过将此属性添加到itemReader(FlatFileItemReader)中来跳过以阅读文件的第一行: