Maison >Java >javaDidacticiel >Comment Java peut-il énumérer efficacement et récursivement les fichiers ?

Comment Java peut-il énumérer efficacement et récursivement les fichiers ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-19 17:11:101036parcourir

How Can Java Efficiently Recursively Enumerate Files?

Énumération récursive des fichiers avec Java

En explorant les options de liste récursive des fichiers dans un répertoire spécifié, nous découvrons différentes approches. Bien qu'il existe des implémentations « hacky », le framework Java lui-même offre des utilitaires robustes pour rationaliser cette tâche.

L'approche rationalisée de Java 8

Java 8 introduit une solution pratique basée sur les flux. :

try (Stream<Path> stream = Files.walk(Paths.get(path))) {
    stream.filter(Files::isRegularFile)
          .forEach(System.out::println);
}

Cette approche fournit un moyen élégant de parcourir les fichiers et prend en charge une gamme d'opérations de flux telles que le filtrage, le mappage et limitant.

Files.find : Filtrage sur les attributs de fichier

Java fournit également Files.find, qui accepte un bi-prédicat pour filtrer les fichiers en fonction des attributs :

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);

Bien que Files.find puisse offrir une optimisation spécifique lors du filtrage sur les attributs, ses performances sont généralement comparables à Files.walk.

Comparaison des performances

Lors de l'évaluation de ces approches, nous vous recommandons de prendre en compte les implications spécifiques en matière de performances en fonction de votre scénario d'utilisation. Pour des informations plus détaillées, reportez-vous au projet GitHub dans la mise à jour de la réponse, qui fournit des résultats et un scénario de test.

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!

Déclaration:
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