Maison >Java >javaDidacticiel >Comment puis-je trouver efficacement des fichiers correspondant à des modèles génériques en Java ?

Comment puis-je trouver efficacement des fichiers correspondant à des modèles génériques en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 12:32:10810parcourir

How Can I Efficiently Find Files Matching Wildcard Patterns in Java?

Recherche de fichiers avec des modèles de caractères génériques en Java

Identifier les fichiers correspondant à un modèle de caractères génériques spécifique peut être intimidant en Java. Pour relever ce défi, envisagez les approches suivantes :

Utilisation de org.apache.commons.io.filefilter.WildcardFileFilter

  • Créer une instance FileFilter en utilisant WildcardFileFilter :

    FileFilter fileFilter = new WildcardFileFilter("sample*.txt");
  • Appliquer le filtre à un répertoire pour lister les fichiers correspondants :

    File dir = new File(".");
    File[] files = dir.listFiles(fileFilter);

Gestion des chemins relatifs

Pour tenir compte des chemins relatifs dans répertoires :

  • Parcourir les sous-répertoires :

    FileFilter dirFilter = new WildcardFileFilter("Test*");
    File[] subdirs = new File(".").listFiles(dirFilter);
    for (File subdir : subdirs) {
      if (subdir.isDirectory()) {
        File[] files = subdir.listFiles(fileFilter);
      }
    }
  • Utiliser la récursion :

    File current = ...; // start at any directory
    File[] files = new ArrayList<>();
    processFiles(files, current, fileFilter);
    
    private void processFiles(List<File> files, File dir, FileFilter filter) {
      File[] subdirs = dir.listFiles(dirFilter);
      for (File subdir : subdirs) {
        if (subdir.isDirectory()) {
          processFiles(files, subdir, filter);
        }
        else if (filter.accept(subdir)) {
          files.add(subdir);
        }
      }
    }

Alternative Approches

  • RegexFileFilter : Ce filtre utilise des expressions régulières pour correspondre aux modèles de fichiers, mais peut être plus complexe à utiliser.
  • Implémentation personnalisée : Créez une classe personnalisée implémentant l'interface FileFilter pour gérer la correspondance des caractères génériques.

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