【发布时间】:2019-08-22 14:02:57
【问题描述】:
我正在使用 Spring Batch 和 FlatFileItemReader 来读取 .CSV 文件。一个文件有一个标题(第一行)、详细信息和页脚(最后一行)。因此,我想通过页脚行验证详细信息的总数。
这是我的示例 .csv 文件。
movie.csv
姓名|类型|年份
诺丁山|浪漫喜剧|1999
玩具总动员 3|动画|2010
美国队长:第一复仇者|动作|2011
3
来自示例文件
第一行是标题(我忽略了它)。
第 2-4 行是细节行,最后是页脚。
我想读取页脚并获取值(最后一行 = 3)
然后,获取详细信息的总数记录(在这种情况下,我们有 3 行)
最后我将验证页脚 (3) 的总数和详细信息的总数记录 (3) 是否相等?
这是我的代码。
@Bean
@StepScope
public FlatFileItemReader<Movie> movieItemReader(String filePath) {
FlatFileItemReader<Movie> reader = new FlatFileItemReader<>();
reader.setLinesToSkip(1); //skip header line
reader.setResource(new PathResource(filePath));
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer("|");
DefaultLineMapper<Movie> movieLineMapper = new DefaultLineMapper<>();
FieldSetMapper<Movie> movieMapper = movieFieldSetMapper();
movieLineMapper.setLineTokenizer(tokenizer);
movieLineMapper.setFieldSetMapper(movieFieldSetMapper);
movieLineMapper.afterPropertiesSet();
reader.setLineMapper(movieLineMapper);
return reader;
}
public FieldSetMapper<Movie> movieFieldSetMapper() {
BeanWrapperFieldSetMapper<Movie> movieMapper = new BeanWrapperFieldSetMapper<>();
movieMapper.setTargetType(Movie.class);
return movieMapper;
}
【问题讨论】:
标签: java spring spring-boot spring-batch flatfilereader