spring-batch - Spring Batch 如何使用 PathMatchingResourcePatternResolver 从文件夹及其所有子文件夹中读取所有 json 文件
问题描述
我正在使用 Spring Batch MultiResourceItemReader 来读取多个文件。这些文件位于父目录及其子目录中。
已经尝试过:
通过我自己的自定义代码读取文件并手动创建资源数组。
使用 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; }
解决方案
您可以使用以下代码段:
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("file:/root/folder/**/*.json");
**/*
将从中递归地返回文件root/folder
。然后将资源数组传递给MultiResourceItemReader
.
推荐阅读
- node.js - react-scripts 需要旧版本的 webpack
- c++ - 如何从 MFC 中的 COLORREF 中提取 RGB 值?
- gcc - GNU GCC 程序集中的本地标签地址
- python - 熊猫自动将列值更改为日期时间
- github - 来自分支 master 的提交出现在其他分支中 - GitHub
- node.js - 在尝试调用 Node.js 函数时,获取 func.call 不是 React 中的函数。我的问题是什么?
- cmake - CPack Deb 生成器排除文件/目标
- strava - 为什么 Strava API 的 segment_eforts 总是返回空结果?
- python - 多处理线程池在最后停止
- scala - Spark 单元测试打破了转换链?