Heim >Java >javaLernprogramm >Wie kann Java Dateien effizient rekursiv aufzählen?

Wie kann Java Dateien effizient rekursiv aufzählen?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 17:11:10990Durchsuche

How Can Java Efficiently Recursively Enumerate Files?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn