Rekursives Auflisten von Dateien mit Java
Bei der Untersuchung der Optionen zum rekursiven Auflisten von Dateien in einem bestimmten Verzeichnis entdecken wir verschiedene Ansätze. Es gibt zwar „hackige“ Implementierungen, aber das Java-Framework selbst bietet robuste Dienstprogramme, um diese Aufgabe zu rationalisieren.
Der optimierte Ansatz von Java 8
Java 8 führt eine praktische streambasierte Lösung ein :
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
Dieser Ansatz bietet eine elegante Möglichkeit zum Durchlaufen von Dateien und unterstützt eine Reihe von Stream-Vorgängen wie Filtern, Zuordnen und Begrenzen.
Files.find: Filtern nach Dateiattributen
Java bietet auch Files.find, das ein Bi-Prädikat zum Filtern von Dateien akzeptiert auf Attributen:
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
Während Files.find möglicherweise eine spezifische Optimierung beim Filtern nach Attributen bietet, ist seine Leistung im Allgemeinen vergleichbar mit Files.walk.
Leistungsvergleich
Bei der Bewertung dieser Ansätze empfehlen wir, die spezifischen Auswirkungen auf die Leistung basierend auf Ihrem Nutzungsszenario zu berücksichtigen. Ausführlichere Einblicke finden Sie im GitHub-Projekt im Update der Antwort, das Ergebnisse und einen Testfall bereitstellt.
Das obige ist der detaillierte Inhalt vonWie kann Java Dateien effizient rekursiv aufzählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!