jeudi 28 octobre 2010

Recuperer la liste des fichiers en c# -tutoriel C#

Pouvez vous me dire combien de fichier existe-il sur l'un de vos disques  C: ,D: ou sur la totalité de l'ordinateur?

il y a plusieurs situations ou le développeur est obligé de récupérer des informations pareilles ,et un grand merci a l'espace de noms System.IO qui nous facilite beaucoup les choses ., car tous ce que nous avons a faire c'est de créer une variable et une boucle.



pour commencer on doit ajouter l'espace de nom System.IO parce qu'il n'est pas utilisé par défaut ,
Ensuite, nous allons créer une nouvelle instance de la classe DirectoryInfo, et dans ce cas, nous utilisons le lecteur racine de C: \ comme paramètre (parce que on veux avoir des informations sur ce dernier), de sorte que le code devrait ressembler à:

DirectoryInfo fileListing = new DirectoryInfo("C:\\");
Ce code fait exactement ce que vous pensez, il prend le répertoire et vous permet d'obtenir toutes sortes d'informations  (permissions,Date de creation,Derniere date de modifications ...etc)
Maintenant que nous avons notre objet DirectoryInfo, nous pouvons parcourir tous les fichiers de ce répertoire et faire n'importe quoi avec eux.Dans notre cas , on vaut seulement Remplir une ListBox avec le chemin Complet des Fichiers . pour faire cela on doit appeler la methode GetFiles() qui retourne un tableau d'objets de type FileInfo.
chaque FileInfo contient une tonne d'informations , mais tous ce qu'on a réellement besoin c'est le nom  ,Donc, notre code final pourrait ressembler à:
DirectoryInfo fileListing = new DirectoryInfo("C:\\");

foreach (FileInfo file in fileListing.GetFiles())
{
  listBox1.Items.Add(fileListing.ToString() + file.Name);
}
Super simple mais soyons honnêtes, combien de fois on a besoin de tous les fichiers dans un répertoire ?! Pas très souvent, mais heureusement la Méthode  GetFiles()accepte un argument "Modèle de Recherche" pour Limiter les FileInfo retournés dans le résultat.
Cet argument est juste une chaîne de caractères ,disons que nous voulons chercher des fichiers text (.txt) Alors Notre code de mise à jour sera le suivant:
DirectoryInfo fileListing = new DirectoryInfo("C:\\");
foreach (FileInfo file in fileListing.GetFiles("*.txt"))
{
  listBox1.Items.Add(fileListing.ToString() + file.Name);
}
le seul inconvenant dans l'utilisation du modèle de recherche c'est qu'on ne peux utiliser qu'un seul modèle c-a-d  on ne peux chercher qu'un seul type de fichier a la fois, et pour remédier a ce problème on n'a qu'a appeler la méthode GetFiles() plusieurs fois avec comme paramètre le type de fichier adéquat, pas plus simple que cela ;) .

2 commentaires:

Anonyme a dit…

thanks for the interesting information

Anonyme a dit…

Merci pour l'article :)