É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!