Maison >Java >javaDidacticiel >Comment « Files.walk » et « Files.find » de Java peuvent-ils être utilisés pour une traversée récursive efficace de l'arborescence de fichiers ?
Java File Tree Traversal : maîtrise des listes récursives
La traversée récursive des systèmes de fichiers peut être une tâche ardue, mais Java propose plusieurs approches pour simplifier ce processus.
Java 8 a introduit un outil puissant pour la gestion des fichiers : Files.walk. Cette méthode fournit une approche basée sur un flux qui parcourt de manière récursive une arborescence de répertoires spécifiée, renvoyant un flux d'objets Path.
Pour répertorier de manière récursive tous les fichiers d'un répertoire à l'aide de Files.walk :
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
Cette solution basée sur les flux permet une manipulation flexible de la liste des fichiers. Par exemple, vous pouvez limiter la recherche, regrouper les fichiers en fonction d'attributs ou mettre fin au parcours plus tôt.
Java fournit également Files.find, qui prend un BiPredicate comme argument. Cette méthode utilise une approche plus optimisée lors de la vérification des attributs de fichier.
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
En termes de performances, Files.find peut être légèrement plus efficace que Files.walk si vous récupérez également les attributs de fichier dans votre filtre.
Pour résumer, Files.walk propose une approche pratique basée sur les flux, tandis que Files.find fournit une solution optimisée pour le filtrage basé sur les attributs. Choisissez la méthode qui correspond le mieux à vos exigences de flexibilité et de performance.
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!