C-SHARP - 5.4 Directory et DirectoryInfo
Les classes Directory et DirectoryInfo du namespace System.IO permettent de manipuler les répertoires (dossiers) en C#. Comme pour les fichiers, deux approches existent : statique (Directory) et orientée objet (DirectoryInfo).
La classe Directory : opérations statiques
Directory expose des méthodes statiques pour les opérations ponctuelles : créer un dossier, vérifier son existence, le supprimer, le déplacer ou lister son contenu.
using System.IO;
if (!Directory.Exists("monDossier"))
{
Directory.CreateDirectory("monDossier");
}
string[] fichiers = Directory.GetFiles("monDossier");
string[] sousDossiers = Directory.GetDirectories("monDossier");
Directory.Move("ancien", "nouveau");
Directory.Delete("aSupprimer", recursive: true);
Note importante : Directory.Delete n'efface qu'un dossier vide par défaut. Passez recursive: true pour supprimer aussi tout son contenu.
La classe DirectoryInfo : approche orientée objet
DirectoryInfo traite un répertoire comme un objet, à privilégier dès que plusieurs opérations sont enchaînées sur le même dossier. On accède directement aux propriétés (Name, FullName, Parent, CreationTime, Exists) sans devoir passer le chemin à chaque appel.
DirectoryInfo dossier = new DirectoryInfo("projets");
Console.WriteLine(dossier.Name);
Console.WriteLine(dossier.CreationTime);
foreach (FileInfo f in dossier.GetFiles())
{
Console.WriteLine(f.Name + " - " + f.Length + " octets");
}
foreach (DirectoryInfo sd in dossier.GetDirectories())
{
Console.WriteLine(sd.Name);
}
Quelle approche choisir ?
Pour une vérification ponctuelle ou une création/suppression unique, Directory est plus direct. Pour explorer la structure d'un dossier en profondeur, lister fichiers et sous-dossiers, ou enchaîner plusieurs traitements, DirectoryInfo rend le code plus naturel et plus performant. Ces classes sont indispensables pour toute application qui doit organiser, scanner ou nettoyer une arborescence de fichiers.