2016-11-17 2 views
2

Я пытаюсь написать программу рекурсивно в моем внешнем hd, но есть такая папка корзины, к которой у меня нет доступа. Я хочу пропустить папку, но не могу ее воспроизвести.Files.walk skip directories

Есть ли что-то не так с этим кодом?

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

ответ

0

Там нет ничего плохого в вашем коде, это проблема разработки с Files.walk. См. this answer.

+0

oh ok, так что, я думаю, мне нужно сделать это в старой моде рекурсивных функций? –

+0

Нет, не обязательно. Есть несколько способов, которыми вы могли бы ходить по дереву файлов. Например, вы можете использовать 'FileVisitor' как [описанный здесь] (https://docs.oracle.com/javase/tutorial/essential/io/walk.html) –

Смежные вопросы