跳到主要内容

多文件输入

QWen Plus 中英对照 Multi-File Input

在一个 Step 中处理多个文件是一个常见的需求。假设这些文件具有相同的格式,MultiResourceItemReader 支持这种类型的输入,无论是 XML 还是平面文件处理均可使用。考虑目录中的以下文件:

file-1.txt  file-2.txt  ignored.txt

file-1.txt 和 file-2.txt 的格式相同,并且由于业务原因,应该一起处理。可以使用 MultiResourceItemReader 通过通配符读取这两个文件。

下面的示例展示了如何在 Java 中使用通配符读取文件:

@Bean
public MultiResourceItemReader multiResourceReader(@Value("classpath:data/input/file-*.txt") Resource[] resources) {
return new MultiResourceItemReaderBuilder<Foo>()
.delegate(flatFileItemReader())
.resources(resources)
.build();
}
java

引用的委托是一个简单的 FlatFileItemReader。上述配置从两个文件中读取输入,并处理回滚和重启场景。需要注意的是,与任何 ItemReader 一样,添加额外的输入(在这种情况下是一个文件)可能会在重启时引起潜在问题。建议批处理作业在成功完成之前使用其自己的独立目录。

备注

通过使用 MultiResourceItemReader#setComparator(Comparator) 对输入资源进行排序,以确保在任务重启场景中,资源顺序在不同任务运行之间得到保留。