处理后如何将文件移动到存档和错误文件夹

时间:2018-10-23 04:14:37

标签: spring-batch

作业运行一次,然后尝试在一个步骤中处理源文件夹中所有可用的文件。此外,它需要将已处理/尝试过但失败的文件从源文件夹移至另一个后续文件夹(/ _archived,/ _ faild)。使用spring batch来分类地将归档文件夹中成功处理的文件和错误文件夹中不成功的文件分类移动的最佳方法是什么。

1 个答案:

答案 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;

    }

}