如何使用 spring 'ResourcePatternResolver' 从指定路径读取所有文件

问题描述 投票:0回答:2

我需要使用 spring ResourcePatternResolver 获取所有文件,无论其文件名如何。

我已经尝试过以下代码

private static final String BPMN_PATH = "process";
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resource = resourcePatternResolver.getResources("classpath:" + BPMN_PATH + "**/*.bpmn");

但这仅适用于文件列表位于类路径(项目目录)中的情况。

在我的场景中,文件位于系统目录中。为此,我尝试使用以下代码

private static final String BPMN_PATH = System.getProperty("user.home");
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resource = resourcePatternResolver.getResources("file:" + BPMN_PATH + File.separator +"process.bpmn");

但这仅适用于指定的文件(process.bpmn)。

有人可以帮忙吗?

java spring spring-boot activiti
2个回答
1
投票

请检查下面的链接;

/WEB-INF/*-context.xml

com/mycompany/**/applicationContext.xml

文件:C:/some/path/*-context.xml

类路径:com/mycompany/**/applicationContext.xml

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html


1
投票

好吧,我记得蚂蚁风格的通配符模式也应该适用于

file:

要加载文件夹中的所有文件(例如

/foo/bar/
),您可以使用:

    resourcePatternResolver.getResources("file:/foo/bar/*");

请注意,仅限于该文件夹中包含的文件。它不会将该文件包含在其子文件夹中。

如果你想递归加载所有文件,甚至是每个子文件夹和子子文件夹等中的文件,你可以使用:

     resourcePatternResolver.getResources("file:/foo/bar/**");
© www.soinside.com 2019 - 2024. All rights reserved.