3 votes

Comment appliquer plusieurs modèles de recherche avec Directory.EnumerateFiles() ?

J'utilise le code ci-dessous pour rechercher des fichiers dans un répertoire (et ses sous-répertoires) avec une extension spécifique :

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);

Maintenant, je peux avoir des fichiers avec différentes extensions comme ".ext1", ".ext2", ".ext3". Je voudrais combiner ces extensions dans mon modèle de recherche, comme ci-dessous :

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);

Des suggestions, s'il vous plaît ?

7voto

Adrian Points 8690

Vous pourriez utiliser une méthode personnalisée qui divise la chaîne de motifs et appelle ensuite EnumerateFiles :

public static IEnumerable<string> MultiEnumerateFiles(string path, string patterns)
{
    foreach (var pattern in patterns.Split('|'))
        foreach (var file in Directory.EnumerateFiles(path, pattern, SearchOption.AllDirectories))
            yield return file;
}

En utilisant yield vous obtenez le même comportement d'évaluation paresseuse qu'avec la version originale. EnumerateFiles .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X