如何在Spring应用程序中获取特定文件夹中的文件路径列表

时间:2018-04-17 07:08:11

标签: java spring spring-boot filepath

我需要一个文件列表'特定文件夹中的路径。我希望它在将应用程序打包到jar后才能工作,因此使用File对象可能无效。

路径需要以静态文件夹开头,例如:

/static/json/networks/network.json

到目前为止,我已经尝试过这个:

File folder = new File("src/main/resources/static/json/networks/pools");
File[] listOfFiles = folder.listFiles();

但它给出了一个以:

开头的路径列表
/src/main/resources/static/etc

我无法使用ClassPathResource。我也尝试过:

ClassLoader classLoader = MethodHandles.lookup().getClass().getClassLoader();
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(classLoader);

但这给了我一条绝对的文件路径。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用名为maven-shared-utils的库(请查看DirectoryScanner类)。

或者你可以自己做:

@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {

    SpringApplication.run(DemoApplication.class, args);

    final String baseFolder = "folder1";
    try {
    Path pathBase = Paths.get(ClassLoader.getSystemResource(baseFolder).toURI());

        Files.walk(pathBase.resolve("folder2/folder3"))
                .filter(Files::isRegularFile)
                .forEach(f -> System.out.println(pathBase.relativize(Paths.get(f.toUri()))));
    } catch (IOException e) {
        e.printStackTrace();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

 }}

此代码将打印src/main/resouces/folder1/folder2/folder3/*中的文件:

文件夹2 / folder3 / fil2.json

文件夹2 / folder3 / file3.kt

文件夹2 / folder3 / file1.xml