2012-05-01 12 views
10

In welcher Reihenfolge Files.walkFileTree besucht Dateien/Verzeichnisse auf dem gleichen Niveau?Reihenfolge der Traversierung in Files.walkFileTree

Es scheint nicht, sie in der Reihenfolge der Größe, der letzten Änderung der Zeit oder des Namens zu besuchen. Ich konnte auch nichts in der API documentation finden.

Vielleicht kann die preVisitDirectory Methode verwendet werden, um die Reihenfolge des Besuchs anzugeben, aber was ist Standardverhalten?

Antwort

12

Die Reihenfolge, in der die Unterverzeichnisse gelesen werden, ist in the Java Tutorial nach diesem Kommentar nicht definiert:

Ein Dateibaum wird zuerst geht Tiefe, aber Sie Annahmen über die Iterationsreihenfolge nicht machen können, dass Unterverzeichnisse besucht werden .

Was die Reihenfolge, in der die Dateien gelesen werden, hängt es (in der aktuellen Implementierung) auf dem DirectoryStream geliefert, die sun.nio.fs.WindowsDirectoryStream auf meinem Computer. Wenn Sie the javadoc of DirectoryStream lesen, sehen Sie Folgendes:

Die vom Iterator zurückgegebenen Elemente haben keine bestimmte Reihenfolge.

+0

Danke für die Antwort. Also wird Files.walkTreeFile irgendwann Files.newDirectoryStream aufrufen und der zurückgegebene DirectoryStream hängt vom Betriebssystem und/oder dem jdk/jre ab? – Sridhar

+0

Grundsätzlich ja. Die Quintessenz ist: Code nicht unter der Annahme, dass Sie eine bestimmte Reihenfolge erhalten, da es keine Garantie dafür gibt. – assylias

Verwandte Themen