Heim >Java >javaLernprogramm >Wie kann man Dateien und Unterverzeichnisse in Java rekursiv durchlaufen?

Wie kann man Dateien und Unterverzeichnisse in Java rekursiv durchlaufen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 05:45:11517Durchsuche

How to Recursively Iterate Through Files and Subdirectories in Java?

So durchlaufen Sie Dateien in Verzeichnissen und Unterverzeichnissen mit Java

Um eine umfassende Liste von Dateien zu erhalten, einschließlich derjenigen in Unterverzeichnissen, bietet Java eine unkomplizierte Lösung. Durch die Nutzung der Rekursion ist es möglich, effektiv im Dateisystem zu navigieren.

Rekursiver Ansatz

Verwenden Sie File#isDirectory(), um zu bestimmen, ob eine Datei ein Verzeichnis darstellt. Wenn „true“, wiederholen Sie den Vorgang mit dem Ergebnis von File#listFiles(). Dies wird als Rekursion bezeichnet.

Hier ist eine Beispielimplementierung:

public static void showFiles(File[] files) {
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getAbsolutePath());
            showFiles(file.listFiles()); // Recursive call
        } else {
            System.out.println("File: " + file.getAbsolutePath());
        }
    }
}

Files#walk von Java 8

Für Java 8 und höher: Files #walk() bietet eine praktische Alternative, die die Schwanzrekursion verwendet:

Files.walk(dir).forEach(path -> showFile(path.toFile()));

Dies geht sicher in die Tiefe Hierarchien, wodurch potenzielle StackOverflowError aufgrund übermäßiger Rekursion vermieden werden.

Das obige ist der detaillierte Inhalt vonWie kann man Dateien und Unterverzeichnisse in Java rekursiv durchlaufen?. 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