Java Files.walk跳过目录

Java Files.walk跳过目录,java,nio,Java,Nio,我正试图写一个程序,在我的外部硬盘中递归地列出文件,但有一个回收站文件夹,我没有访问权。我想跳过文件夹,但似乎做不到 下面的代码有什么问题吗 public static void main(String[] args) throws Exception { String path = "K:\\"; Files.walk(Paths.get(path)) .filter(it -> !it.toString().startsWith("K:\\$R

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

下面的代码有什么问题吗

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)
    ...

您的代码没有问题,这是
文件的设计问题。walk
。有关详细信息,请参见。

哦,好吧,我想我必须用递归函数的旧式方法来实现它?不,不一定。有几种方法可以遍历文件树。例如,您可以使用
FileVisitor
作为