Maison > Java > javaDidacticiel > Comment faire correspondre les chaînes génériques lors de la localisation de fichiers en Java ?

Comment faire correspondre les chaînes génériques lors de la localisation de fichiers en Java ?

Susan Sarandon
Libérer: 2024-12-03 10:09:11
original
307 Les gens l'ont consulté

How to Match Wildcard Strings When Locating Files in Java?

Comment localiser les fichiers correspondant aux chaînes génériques en Java

En Java, trouver des fichiers qui adhèrent à des modèles de caractères génériques spécifiques est une tâche courante. Lorsqu'on vous donne une chaîne générique telle que "../Test?/sample*.txt", il est essentiel d'identifier les fichiers correspondants qui correspondent à ce modèle.

Une méthode largement acceptée pour relever ce défi consiste à exploiter le WildcardFileFilter. classe de la bibliothèque Apache Commons IO. Ce filtre vous permet de spécifier des expressions génériques qui définissent les critères de recherche de fichiers.

Pour illustrer son utilisation, regardons un exemple :

import org.apache.commons.io.FileUtils;

File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("sample*.java");
File[] files = dir.listFiles(fileFilter);
for (File file : files) {
    System.out.println(file);
}
Copier après la connexion

Dans ce scénario, le filtre trouvera tous les fichiers du répertoire actuel qui correspondent au modèle "sample*.java", y compris les fichiers comme "sample22b.java" et "sample-spiffy.java".

Cependant, si vous devez faire correspondre des chemins plus complexes avec des caractères génériques et des sous-répertoires, une approche plus explicite est requise. Une option consiste à parcourir la liste des sous-répertoires et à appliquer le filtre générique à chaque sous-répertoire séparément :

FileFilter dirFilter = new WildcardFileFilter("Test*");
File[] directories = dir.listFiles(dirFilter);
for (int i = 0; i < directories.length; i++) {
    File dir = directories[i];
    if (dir.isDirectory()) {
        FileFilter fileFilter = new WildcardFileFilter("sample*.java");
        File[] files = dir.listFiles(fileFilter);
    }
}
Copier après la connexion

Cette approche garantit que les fichiers situés dans les sous-répertoires correspondant au modèle "Test*" sont également pris en compte dans la recherche. résultats.

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