gpt4 book ai didi

java - 使用 Spring Batch 处理文件顺序

转载 作者:行者123 更新时间:2023-11-30 01:41:50 25 4
gpt4 key购买 nike

我有一个关于使用 Spring Batch 处理 csv 文件的顺序的问题,我有几个 csv 文件要处理,当我启动 Spring Batch 时,我不知道 Spring 按什么顺序处理这些文件。

我想知道Spring如何选择第一个文件来处理?我在哪里可以找到这个设置?

是否可以定义排序?例如,根据文件名上写的日期处理文件?以及如何自定义要处理的第一个文件的选择?

谢谢大家,

最佳答案

Spring 批处理的MultiResourceItemReader使用Comparator<Resource>以保留顺序。如果我们不提供比较器,则默认排序将基于文件名。如果您想进行自定义排序,您可以编写自己的比较器逻辑,如下所示(根据上次修改时间排序)。

public class FileModifiedComparator implements Comparator<FileSystemResource>{

@Override
public int compare(FileSystemResource file1, FileSystemResource file2) {
//comparing based on last modified time
return Long.compare(file1.lastModified(),file2.lastModified());
}
}

您可以修改比较器来检查修改排序逻辑,例如文件名、创建等,例如:return file1.getFilename().compareTo(file2.getFilename());return Long.compare(file1.contentLength(),file2.contentLength());并在 MultiResourceItemReader bean,设置此比较器。

<bean id="fileModifiedComparator" class="FileModifiedComparator"/> 

<bean id="multiResourceReader"
class=" org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="file:inputs/input*.csv" />
<property name="delegate" ref="flatFileItemReader" />
<property name="comparator" ref="fileModifiedComparator" />
</bean>

关于java - 使用 Spring Batch 处理文件顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com