2
Ich versuche, ein Programm die List-Dateien rekursiv in meinem externen hd zu schreiben, aber es gibt diesen Papierkorb-Ordner, auf den ich keinen Zugriff habe. Ich möchte den Ordner überspringen, kann es aber anscheinend nicht tun.Files.walk Verzeichnisse überspringen
Gibt es etwas falsch mit diesem Code unten?
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);
}
Es hält mir diesen Fehler geben:
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)
...
oh ok also ich denke, ich muss es die alte Mode der rekursiven Funktionen tun? –
Nein, nicht unbedingt. Sie können den Dateibaum auf verschiedene Arten durchlaufen. Zum Beispiel könnten Sie 'FileVisitor' als [hier beschrieben] verwenden (https://docs.oracle.com/javase/tutorial/essential/io/walk.html) –