【发布时间】:2019-07-18 04:04:24
【问题描述】:
我以前从未使用过 Spring Batch,我有一个 csv 文件,我需要读取具有特定模型的所有列,但我有很多例外。
csv 文件有 8 个字段。如果所有五个字段都存在,则文件处理运行良好。但是如果不小心输入了8个字段,如下图:
c1;c2;C3;C4;C5;C6;C7;C8 // 它工作 c1;C3;C7 // 不工作:程序崩溃
错误是:引起:org.springframework.batch.item.file.transform.IncorrectTokenCountException:记录中发现的令牌数不正确:预期3实际8。
我的代码:
@Bean
public Step Step2(StepBuilderFactory stepBuilders) throws IOException {
System.out.println("cecStep2");
return stepBuilders.get("fileReject")
.<CSCivique, String>chunk(100)
.reader(reader())
.processor(processor2FileReject())
.writer(writer2())
.build();
}
@Bean
public FlatFileItemReader<CSCivique> reader() throws IOException{
try {
return new FlatFileItemReaderBuilder<CSCivique>().name("personItemReader")
.resource(new ClassPathResource(confFile ()))
.delimited()
.delimiter(";")
.names(new String[] { "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8" })
.targetType(CSCivique.class)
.strict(false)
.build();
}catch(Exception e) {
System.out.println("----------- Exception reader() --------------");
return null ;
}
}
我想在文件拒绝中保存行,例如: c1;C3;C7:请检查字段数
谢谢。
【问题讨论】:
标签: csv spring-batch