2016-11-17 7 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

オハイオ州オハイオ州私はそれを再帰関数の古い方法のやり方をしなければならないと思いますか? –

+0

いいえ、必ずしもそうではありません。ファイルツリーを歩くにはいくつかの方法があります。たとえば、「FileVisitor」を[ここに記載](https://docs.oracle.com/javase/tutorial/essential/io/walk.html)として使用することができます。 –