Maison > Java > javaDidacticiel > Comment parcourir efficacement un répertoire de fichiers et ses sous-répertoires en Java ?

Comment parcourir efficacement un répertoire de fichiers et ses sous-répertoires en Java ?

Susan Sarandon
Libérer: 2024-12-20 04:23:09
original
744 Les gens l'ont consulté

How to Efficiently Traverse a File Directory and Its Subdirectories in Java?

Itération dans les sous-répertoires d'un répertoire de fichiers en Java

Lorsque vous travaillez avec des fichiers en Java, il est souvent nécessaire d'accéder non seulement aux fichiers d'un répertoire mais aussi ceux de ses sous-répertoires. Cela pose la question : comment pouvons-nous naviguer efficacement dans un répertoire et ses sous-répertoires en Java ?

Récursion : une approche standard

Une technique standard d'itération de répertoire consiste à utiliser récursivité. En testant si un fichier donné est un répertoire à l'aide de la méthode File#isDirectory(), vous appelez récursivement la même méthode avec ses résultats File#listFiles().

L'extrait de code suivant illustre cette approche récursive :

import java.io.File;

public class Demo {

    public static void main(String... args) {
        File dir = new File("/path/to/dir");
        showFiles(dir.listFiles());
    }

    public static void showFiles(File[] files) {
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.println("Directory: " + file.getAbsolutePath());
                showFiles(file.listFiles()); // Calls same method again.
            } else {
                System.out.println("File: " + file.getAbsolutePath());
            }
        }
    }
}
Copier après la connexion

Alternative Java 8 : récursivité de queue avec Files#walk()

Pour Java 8 et les versions ultérieures, la méthode Files#walk() fournit une alternative à la récursivité. Il utilise la récursion de queue, évitant le risque d'une StackOverflowError dans les situations avec des arborescences de répertoires profondes.

Voici comment utiliser Files#walk() pour l'itération de répertoire :

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DemoWithJava8 {

    public static void main(String... args) throws Exception {
        Path dir = Paths.get("/path/to/dir");
        Files.walk(dir).forEach(path -> showFile(path.toFile()));
    }

    public static void showFile(File file) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getAbsolutePath());
        } else {
            System.out.println("File: " + file.getAbsolutePath());
        }
    }
}
Copier après la connexion

Conclusion

En tirant parti de la récursivité avec File#isDirectory() et File#listFiles() ou en en utilisant Files#walk() dans Java 8, vous pouvez parcourir efficacement les fichiers de répertoire et les fichiers de sous-répertoire dans une application Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal