使用Files.walk跳过目录。

4

我正在尝试编写一个程序,递归地列出我外部硬盘中的文件,但有一个回收站文件夹我无法访问。我想跳过这个文件夹,但似乎做不到。

下面的代码有什么问题吗?

public static void main(String[] args) throws Exception
{
    String path = "K:\\";

    Files.walk(Paths.get(path))
            .filter(it -> !it.toString().startsWith("K:\\$RECYCLE.BIN"))
            .filter(Files::isRegularFile)
            .forEach(System.out::println);
}

它一直给我这个错误:
Exception in thread "main" java.io.UncheckedIOException java.nio.file.AccessDeniedException: K:\$RECYCLE.BIN\S-1-5-21-684815243-3314879918-332412784-1001
    at java.nio.file.FileTreeIterator.fetchNextIfNeeded(FileTreeIterator.java:88)
    at java.nio.file.FileTreeIterator.hasNext(FileTreeIterator.java:104)
    ...
1个回答

2

你的代码没有问题,这是Files.walk的设计问题。详情请参见此答案


哦,好的,那我想我必须用递归函数的老方法来做了? - Satana Lee
不一定。您可以有多种方法遍历文件树。例如,您可以像此处描述的那样使用FileVisitor - D.B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接