【发布时间】:2019-04-02 16:56:19
【问题描述】:
我正在尝试使用 Spring Batch 读取 txt 文件,但我的问题是每个文件都有不同的数据。 例如文件的每一行对应一个类,所以对于每一行我需要不同的 FlatFileItemReader、Tokenizer 和 FieldSetMapper。
我的文件看起来像:
00|0|56||Class1|25|001|0
02|23|11||Class2|65|ENG|ENG|
02|32|25||Class3|45|0101|FRA|Es|TR
我尝试读取包含相同格式数据的文件并且它可以工作,但我不知道如何读取不同格式的文件。
FlatFileItemReader<Class1> fileReader=new FlatFileItemReader<Class1>();
fileReader.setResource(new ClassPathResource("/file.txt"));
DefaultLineMapper<Class1> lineMapper=new DefaultLineMapper<Class1>();
DelimitedLineTokenizer tokenizer=new DelimitedLineTokenizer();
tokenizer.setDelimiter("|");
lineMapper.setLineTokenizer(tokenizer);
fileReader.setLineMapper(lineMapper);
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
@MahmoudBenHassine 谢谢你,但每一行代表一个类的对象
-
这不是问题。我链接的问题中的答案使用
PatternMatchingCompositeLineMapper,在这里也可以使用*Class1*和*Class2*等模式。但是我用一个例子编辑了@Luca Basso Ricci的答案,因为他的答案是正确的并且他值得称赞!
标签: java spring spring-batch