作业运行一次,然后尝试在一个步骤中处理源文件夹中所有可用的文件。此外,它需要将已处理/尝试过但失败的文件从源文件夹移至另一个后续文件夹(/ _archived,/ _ faild)。使用spring batch来分类地将归档文件夹中成功处理的文件和错误文件夹中不成功的文件分类移动的最佳方法是什么。
答案 0 :(得分:1)
您可以添加单独的tasklet
或使用JobExecutionListener.afterJob
钩子来移动文件。
下面是使用tasklet
Java配置
@autowired
private MoveFilesTasklet moveFilesTasklet
@Bean
protected Step moveFiles() {
return steps
.get("moveFiles")
.tasklet(moveFilesTasklet)
.build();
}
@Bean
public Job job() {
return jobs
.get("taskletsJob")
.start(processFiles())
.next(moveFiles())
.build();
Taskelt
@Component
public class MoveFilesTasklet implements Tasklet {
private String filePath ="someFilePAth";
@Override
public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
final File directory = new File(filePath);
Arrays.asList(directory.listFiles((dir, name) -> name.matches("yourfilePrefix".*?")))
.stream()
.forEach(singleFile -> singleFile.renameTo(new File("someNewFilePath")));
return null;
}
}