我需要一个文件列表'特定文件夹中的路径。我希望它在将应用程序打包到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);
但这给了我一条绝对的文件路径。
答案 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