在我的春季批处理应用程序中,我已按如下方式配置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=[;;;;;;;;]
答案 0 :(得分:0)
我在FieldSetMapper上检查了空:
if (!fieldSet.readString("client").isEmpty()) {
pos.setSedol(fieldSet.readString("client"));
}
然后在ItemProcessor process()方法中,我检查值为Null:
if (!line.isValid()) {
return null;
}