0
点赞
收藏
分享

微信扫一扫

Java8 Files.walk 的基本使用

月白色的大狒 2023-08-04 阅读 187

Files.walk的基本使用

Java NIO中提供了Files.walk方法用于遍历文件树。Files.walk能非常方便地遍历一个文件夹下的所有文件和子文件夹。 Files.walk方法使用示例:

Path startingDir = Paths.get("/home/user/docs");

Files.walk(startingDir)
    .forEach(path -> {
        System.out.println(path); 
    });

这个示例遍历startingDir文件夹下的所有文件和子文件夹,并打印出每个文件的路径。 Files.walk返回一个Stream,所以我们可以通过forEach对每个文件路径进行处理。更复杂的操作可以通过filter、map等Stream方法实现。 Files.walk需要注意的几点:

  • 它默认是深度优先遍历,可以通过maxDepth参数控制遍历深度。
  • 可以通过FileVisitOption配置项控制遍历行为,比如FOLLOW_LINKS跟踪 Symbolic Links。
  • 需要处理可能出现的IOException。 通过Files.walk可以便利实现遍历大量文件,查找文件等操作。它隐藏了遍历的复杂性,让我们更容易处理文件树。

例子 获取指定文件夹下所有以MP4结尾的文件

// 指定要遍历的文件夹
        String startFolder = "D:\\BaiduNetdiskDownload\\习题精讲";
        List<String> result = null;
        try (Stream<Path> paths = Files.walk(Paths.get(startFolder))) {

            result = paths.filter(path -> !Files.isDirectory(path))
                    .filter(path -> path.toString().endsWith(".mp4"))
                    .map(Path::getFileName)
                    .map(Path::toString)
                    .collect(Collectors.toList());
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(result);

以上简单介绍了Files.walk的基本使用,它是Java NIO中非常有用的一个API。

举报

相关推荐

0 条评论