Java 7 Tage NIO.2 – Rekursiv durch einen Verzeichnisbaum

NIO2 stellt eine Erweiterung der File API in der Java Welt dar. Was davon in Java 7 auf uns zukommt, und wie mit NIO in einen Verzeichnisbaum gesucht wird hier


Es ist soweit, Oracle hat Java 7 veröffentlicht! Ebenfalls kurz und bündig auf java.net beworben, schon bereit zum Download. Laut Jaxenter inkludiert es 9.494 Bugfixes, 1.966 Überarbeitungen, 9.018 Changesets und 147 Builds. Die genauen Unterschiede zwischen diesen Begriffen bitte dort nachfragen, es klingt jedenfalls nach einer Menge Arbeit :) Das heißt nun könnt ihr auch direkt mit der neuen Version das hier gezeigte ausprobieren!

Darum gleich zurück zum heutigen Topic und ab durch den Verzeichnisbaum mit NIO2! Dazu werden in java.nio.Files zwei statische Methoden bereitgestellt:

java.nio.Files.walkFiletree(Path start, FileVisitor<? super Path> visitor);
java.nio.Files.walkFiletree(Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor);

Gleich mal zur Erklärung der Parameter:

start – Hier wird der Pfad übergeben der als Wurzelelement des Verzeichnisbaums dienen soll

options – Die FileVisitOption ist ein Enum und bietet Optionen in Bezug auf Symbolische Links(FOLLOW_LINKS) und Zyklenkennung (DETECT_CYCLES).

maxDepth – maximale Suchtiefe, also die Anzahl der Subverzeichnisse bis zu denen vorgegangen wird. Wäre maxDepth 3 und wir würden /home/nullpointer/1/2/3 von /home aus durchsuchen kämen wir also nur bis /home/nullpointer/1/2

visitor – Das FileVisitor Interface bietet dem Entwickler die Möglichkeit an diversen Punkten der rekursiven Suche einzuspringen. Bereits anhand der Namen der Methoden lässt sich zuordnen, wann dies geschieht:

FileVisitor.postVisitDirectory();
FileVisitor.preVisitDirectory();
FileVisitor.visitFile();
FileVisitor.visitFileFailed();

Diese Methoden liefern alle ein Ergebnis vom Typ FileVisitorResult zurück, mit dem bestimmt wird ob die Suche fortgesetzt wird oder nicht. Die möglichen Resultate sind: CONTINUE, SKIP_SIBLINGS, SKIP_SUBTREE, TERMINATE

Eine Implementierung des FileVisitors liefert Oracle gleich mit: SimpleFileVisitor. Dieser implementiert die oben angeführten Methoden Read-Only und wirft lediglich einen Fehler sollte eine Exception auftreten.

Happy NIOing bzw. FileVisiting :)

Ähnliche Artikel:

Autor: Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*