Maison > Java > javaDidacticiel > Comment les fichiers `Files.walk()` et `Files.find()` de Java 8 peuvent-ils rationaliser la liste des fichiers récursifs ?

Comment les fichiers `Files.walk()` et `Files.find()` de Java 8 peuvent-ils rationaliser la liste des fichiers récursifs ?

Susan Sarandon
Libérer: 2024-12-19 09:02:11
original
128 Les gens l'ont consulté

How Can Java 8's `Files.walk()` and `Files.find()` Streamline Recursive File Listing?

Liste de fichiers récursifs en Java : rationalisé grâce aux améliorations du framework

Contexte :

Itération sur tous les fichiers d’une structure de répertoires sont un besoin courant dans la programmation Java. Cependant, de nombreuses implémentations ont tendance à être complexes et manquent de prise en charge du framework.

Solution Framework (Java 8) : Files.walk() et Files.find()

Java 8 a introduit des mécanismes élégants pour l'itération des fichiers :

  • Files.walk() : Parcourt un répertoire de manière récursive, fournissant un flux d'objets Path représentant des fichiers individuels.
  • Files.find() : accepte un filtre BiPredicate, permettant un parcours plus efficace basé sur les attributs de fichier.

Exemple de code :

En utilisant Files.walk(), vous pouvez répertorier de manière récursive tous les fichiers normaux dans un répertoire spécifié comme suit :

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

Filtrage conditionnel (facultatif) :

Si un filtrage des attributs de fichier est requis, Files.find( ) offre une efficacité accrue :

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);
Copier après la connexion

Performance Considérations :

Files.walk() et Files.find() fonctionnent généralement de manière identique dans la pratique. Cependant, Files.find() peut être légèrement plus efficace lors du filtrage basé sur les attributs.

Notes supplémentaires :

  • Files.walk() fournit un flux- flexibilité basée sur un traitement ultérieur, tel que la limitation, le regroupement ou le mappage.
  • Files.find() offre une interface de filtre dédiée, qui peut simplifier les attributs complexes chèques.

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