web-dev-qa-db-fra.com

Trouver un fichier avec une certaine extension dans le dossier

Étant donné un chemin de dossier (comme C:\Random Folder), comment puis-je y trouver un fichier qui contient une certaine extension, comme txt? Je suppose que je vais devoir faire une recherche pour *.txt _ dans le répertoire, mais je ne sais pas comment je suis censé commencer cette recherche.

87
Dominic K

Regarde le System.IO.Directory _ class et la méthode statique GetFiles. Il a une surcharge qui accepte un chemin et un modèle de recherche. Exemple:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");
162
Anthony Pegram

Vous pouvez utiliser la classe Directory

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
27
sgriffinusa

C'est assez facile, en fait. Vous pouvez utiliser le System.IO.Directory classe en conjonction avec System.IO.Path . Quelque chose comme (utiliser LINQ, c'est encore plus simple):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

Bien entendu, il existe de nombreuses variantes de cette technique. Certaines des autres réponses sont plus simples si votre filtre est plus simple. Celui-ci a l'avantage de l'énumération retardée (si cela compte) et d'un filtrage plus souple au détriment de davantage de code.

14
Greg D

La méthode ci-dessous ne renvoie que les fichiers ayant une certaine extension (par exemple: fichier avec .txt mais pas .txt1)

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }
3
hazjack

Selon ma compréhension, cela peut être fait de deux manières:

1) Vous pouvez utiliser Directory Class avec la méthode Getfiles et parcourir tous les fichiers pour vérifier l’extension requise.

Directory.GetFiles ("votre_fichier_fichier) [i] .Contains (" * .txt ")

2) Vous pouvez utiliser Path Class avec GetExtension, méthode qui prend le chemin du fichier en tant que paramètre et vérifie l'extension. Pour obtenir le chemin du fichier, il suffit de définir une condition de boucle pour extraire un fichier unique et renvoyer le chemin du fichier pouvant être utilisé pour la vérification.

Path.GetExtension (your_file_path) .Equals (". Json")

Remarque: La logique doit être dans une condition de bouclage.

0
Pulkit Shah