Java 使用spring批处理ItemReader解析文件
在我的spring批处理应用程序中,我配置了一个Java 使用spring批处理ItemReader解析文件,java,spring,spring-batch,Java,Spring,Spring Batch,在我的spring批处理应用程序中,我配置了一个FlatFileItemReader,如下所示: public PositionRowReader() { reader = new FlatFileItemReader<>(); reader.setLinesToSkip(1); //skip header row DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(";");
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);
我想忽略带;;;,的行;;;,换句话说,它们只是空的。我有办法做到这一点吗?我还有一个FieldSetMapper
目前我正在获取例外情况,例如:
20180123;ABC;00001;
20180123;ABC;00001;
;;;
;;;
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;
}
可能重复的