繁体   English   中英

使用 spring 批处理 ItemReader 解析文件

[英]parsing file with spring batch ItemReader

在我的 spring 批处理应用程序中,我配置了一个FlatFileItemReader如下:

public PositionRowReader() {

    reader = new FlatFileItemReader<>();

    reader.setLinesToSkip(1); //skip header row

    DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(";");
    tokenizer.setStrict(false);
    tokenizer.setNames(PosFieldSetMapper.COLUMN_NAMES);

    DefaultLineMapper<PosRow> posLineMapper = new DefaultLineMapper<>();
    posLineMapper.setLineTokenizer(tokenizer);
    posLineMapper.setFieldSetMapper(new PosFieldSetMapper());
    posLineMapper.afterPropertiesSet();


    reader.setLineMapper(posLineMapper);

}

在我正在阅读的file中,我可以拥有不想处理并想忽略的数据,例如:

20180123;ABC;00001;  
20180123;ABC;00001;
;;;
;;;

我想忽略带有 ;;; 的行,换句话说,它们只是空的。 有没有办法做到这一点? 我也有一个FieldSetMapper

目前我正在获取异常,例如:

org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 2253 in resource=[file [...]], input=[;;;;;;;;]

我在 FieldSetMapper 上检查了空:

if (!fieldSet.readString("client").isEmpty()) {
        pos.setSedol(fieldSet.readString("client"));
    }

然后在 ItemProcessor process() 方法上,我检查值中的 Null:

  if (!line.isValid()) {
            return null;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM