首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8:从文件夹/子文件夹获取文件

Java 8:从文件夹/子文件夹获取文件
EN

Stack Overflow用户
提问于 2018-02-01 13:16:17
回答 2查看 25.1K关注 0票数 9

我在SpringBoot应用程序的资源文件夹中有这个文件夹。

代码语言:javascript
复制
resources/files/a.txt
resources/files/b/b1.txt
resources/files/b/b2.txt
resources/files/c/c1.txt
resources/files/c/c2.txt

我想得到所有的txt文件,所以这是我的代码:

代码语言:javascript
复制
   ClassLoader classLoader = this.getClass().getClassLoader();
   Path configFilePath = Paths.get(classLoader.getResource("files").toURI());   

   List<Path> atrackFileNames = Files.list(configFilePath)
                .filter(s -> s.toString().endsWith(".txt"))
                .map(Path::getFileName)
                .sorted()
                .collect(toList());

但我只得到了文件a.txt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-01 13:22:39

代码语言:javascript
复制
    Path configFilePath = FileSystems.getDefault()
            .getPath("C:\\Users\\sharmaat\\Desktop\\issue\\stores");

    List<Path> fileWithName = Files.walk(configFilePath)
            .filter(s -> s.toString().endsWith(".java"))
            .map(Path::getFileName).sorted().collect(Collectors.toList());

    for (Path name : fileWithName) {
        // printing the name of file in every sub folder
        System.out.println(name);
    }
票数 26
EN

Stack Overflow用户

发布于 2018-02-01 13:26:49

Files.list(path)方法只返回目录中的文件流。并且该方法列表不是递归的。

相反,您应该使用Files.walk(path)。此方法遍历根植于给定起始目录的所有文件树。

更多关于这方面的情况:

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#walk-java.nio.file.Path-java.nio.file.FileVisitOption...-

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48563709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档