首页 > 解决方案 > Spring Batch 如何使用 PathMatchingResourcePatternResolver 从文件夹及其所有子文件夹中读取所有 json 文件

问题描述

我正在使用 Spring Batch MultiResourceItemReader 来读取多个文件。这些文件位于父目录及其子目录中。

已经尝试过:

  1. 通过我自己的自定义代码读取文件并手动创建资源数组。

  2. 使用 PathMatchingResourcePatternResolver 可以在代码示例中看到(灵感来自这个Find Resources with PathMatchingResourcePatternResolver and URLClassloader in JARs

    @Bean
    public MultiResourceItemReader<List<SingleJsonRowInput>> 
    multiResourceItemReader() {
    PathMatchingResourcePatternResolver  patternResolver = new 
    PathMatchingResourcePatternResolver();
    Resource resources[] = null;;
    try {
        resources = 
        patternResolver.getResources("file:C:\\inputFolder\\**\\*.json");
    } catch (IOException e) {
        e.printStackTrace();
    }
    MultiResourceItemReader<List<SingleJsonRowInput>> 
    multiResourceItemReader = new MultiResourceItemReader<>();
    multiResourceItemReader.setResources(resources);
    multiResourceItemReader.setDelegate(new 
    ItemReaderForMulti(fileManager));
    return multiResourceItemReader;
    }
    

标签: spring-batch

解决方案


您可以使用以下代码段:

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("file:/root/folder/**/*.json");

**/*将从中递归地返回文件root/folder。然后将资源数组传递给MultiResourceItemReader.


推荐阅读