在春季批处理中使用项目阅读器从文本文件中读取特定行

我正在尝试从START-OF-DATA行到END-OF-DATA行读取未格式化的附件文本文件,并忽略文件中的所有其他行。sampleText file

我像下面那样创建了读取器,由于我的文件是非结构化的,并且无法在执行器数据之前包含多余的行,因此无法正常工作

public CustomflatFileItemReader<MyBean> reader() {
    CustomflatFileItemReader<MyBean> reader = new CustomflatFileItemReader<MyBean>();

    reader.setLineMapper(new DefaultLineMapper<InterestRate>() {{
        setLineTokenizer(new DelimitedLineTokenizer("|") {{
            setNames(new String[] { "name","refKey1","refKey2","refKey4","refKey5","refKey6","refKey7"});
        }});
        setfieldSetMapper(new BeanWrapperFieldSetMapper() {{
            setTargetType(MyBean.class);
        }});
    }});
    return reader;
fenglongwei 回答:在春季批处理中使用项目阅读器从文本文件中读取特定行

您需要一个自定义阅读器(可以扩展FlatFileItemReader)。该阅读器应跳过行,直到读取“ START-OF-DATA”为止,然后返回每一行,直到读取“ END-OF-DATA”并返回null

之间的线是常规的管道分隔值,因此您可以使用共享的相同配置将字段映射到域对象。

本文链接:https://www.f2er.com/3156986.html

大家都在问