Java 8 Files.walk没有返回所有路径

时间:2017-02-15 20:48:20

标签: java-8 nio

这是方法

public List<Path> listAllPaths() throws IOException {
         Files.walk(Paths.get("/tmp")).forEach(e -> System.out.println(e.toString()));
        return Files.walk(Paths.get(filePath)).collect(Collectors.toList());
    }

当我执行此方法时,我看到只打印/返回了/ tmp 我希望看到

中的所有子目录和文件

Javadocs说

&#34;通过遍历以给定起始文件为根的文件树,返回一个懒惰填充Path的Stream。文件树遍历深度优先,流中的元素是Path对象,它们就像通过解析相对路径来获得一样。&#34;

1 个答案:

答案 0 :(得分:3)

这是一个符号链接,而不是真正的路径:

Path p = Paths.get("/tmp");
System.out.println(Files.isSymbolicLink(p)); // returns true

真实路径为/private/tmp

你可以做一个

ls -l 

并查看某些文件夹归 _mbsetupuser 用户所有。

您还可以通过以下方式在评论中按照建议行走符号链接:

 Files.walk(Paths.get("/tmp"), FileVisitOption.FOLLOW_LINKS)