Le développement d’applications nous amène très souvent à avoir besoin de déplacer ou copier des dossiers ou des fichiers. C# propose de nombreuses méthodes pour effectuer ces actions aisément. Elles sont toutes localisées dans le namespace System.IO. Je vais vous en décrire quelques unes dans cet article.
DriveInfo
La classe DriveInfo fournit des informations sur les lecteurs présents sur le système: nom, taille, espace disponible…
DriveInfo[] drivesInfo = DriveInfo.GetDrives(); foreach (DriveInfo driveInfo in drivesInfo) { Console.WriteLine("Lecteur {0}", driveInfo.Name); Console.WriteLine(" Type:{0}", driveInfo.DriveType); if (driveInfo.IsReady == true) { Console.WriteLine(" Label:{0}", driveInfo.VolumeLabel); Console.WriteLine(" Systeme de fichier:{0}", driveInfo.DriveFormat); Console.WriteLine(" Espace disponible:{0} bytes", driveInfo.TotalFreeSpace); Console.WriteLine(" Espace total:{0} bytes", driveInfo.TotalSize); } }
DirectoryInfo et Directory
Un lecteur contient des dossiers. Pour travailler avec les dossiers, vous avez deux options: la classe DirectoryInfo ou la classe statique Directory. Lorsque vous réalisez plusieurs opérations, privilégiez DirectoryInfo.
Créer un dossier
var directory = Directory.CreateDirectory(@"C:\Temp\Dossier1"); var directoryInfo = new DirectoryInfo(@"C:\Temp\Dossier2"); directoryInfo.Create();
Si vous tentez de créer un dossier dans un emplacement dont vous ne possédez pas les droits, une exception UnauthorizedAccessException est levée. Si les dossiers intermédiaires n’existent pas, ils sont également créés.
Supprimer un dossier
On utilise la méthode Delete de Directory ou DirectoryInfo pour supprimer un dossier.
if (Directory.Exists(@"C:\Temp\Dossier1")) { Directory.Delete(@"C:\Temp\Dossier1"); } var directoryInfo = new DirectoryInfo(@"C:\Temp\Dossier2"); if (directoryInfo.Exists) { directoryInfo.Delete(); }
Accès aux sous dossiers
Il est possible de lister les sous dossiers d’un répertoire à partir de son DirectoryInfo. La méthode GetDirectories de DirectoryInfo renvoie une liste de DirectoryInfo des sous dossiers d’un dossier donné. Elle prend en paramètre un string qui définit les critères de sélection.
{ DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Program Files"); DirectoryInfo[] subDirectories = directoryInfo.GetDirectories("*crosoft*"); foreach (DirectoryInfo subDirectory in subDirectories) { Console.WriteLine(subDirectory.Name); } }
L’exemple ci-dessus affiche tous les dossiers qui contiennent le mot « crosoft » dans le dossier C:\Program Files.
Déplacer un dossier
Le déplacement d’un dossier est réalisé avec la méthode MoveTo de DirectoryInfo et Move de Directory.
Directory.Move(@"C:\source", @"c:\destination"); DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\source2"); directoryInfo.MoveTo(@"C:\destination2");
File et FileInfo
Comme avec les dossiers, la gestion des fichiers se fait avec deux classes FileInfo et File.
Supprimer un fichier
On utilise la méthode Delete de File ou FileInfo pour supprimer un fichier.
string path1 = @"c:\temp\monfichier.txt"; string path2 = @"c:\temp\monfichier2.txt"; if (File.Exists(path1)) { File.Delete(path1); } FileInfo fileInfo = new FileInfo(path2); if (fileInfo.Exists) { fileInfo.Delete(); }
Déplacer un fichier
On utilise la méthode MoveTo de FileInfo ou Move de File pour déplacer un fichier.
string path =@"c:\temp\test.txt"; string destPath =@"c:\temp\testCopy.txt"; File.Move(path, destPath); path = @"c:\temp\test2.txt"; destPath = @"c:\temp\testCopy2.txt"; FileInfo fileInfo = new FileInfo(path); fileInfo.MoveTo(destPath);
Copier un fichier
La copie de fichier se fait avec Copy de File et CopyTo de FileInfo.
string path =@"c:\temp\test.txt"; string destPath =@"c:\temp\destTest.txt"; File.Copy(path, destPath); destPath = @"c:\temp\destTest2.txt"; FileInfo fileInfo = new FileInfo(path); fileInfo.CopyTo(destPath);
Path
La classe Path de System.IO gère les chemins des dossiers et des fichiers.
Elle propose par exemple la méthode Combine qui concatène un chemin de dossier et un nom de fichier pour fournir le chemin complet du fichier.
C’est plus sécurisé de l’utiliser que de le faire manuellement.
Elle propose d’autres méthodes intéressantes:
- GetDirectoryName: renvoie le chemin du répertoire à partir du chemin passé en paramètre (ex: ‘C:\Temp’)
- GetExtension: renvoie l’extension du fichier passé en paramètre. (ex: ‘.pdf’)
- GetFileName: renvoie le nom du fichier et son extension à partir du chemin passé en paramètre (ex: ‘monfichier.pdf’)
- GetPathRoot: renvoie la racine du chemin passé en paramètre (ex: ‘D:\’)
- GetRandomFileName: génère un nom de fichier aléatoire (ex: ‘vyj4z3ew.b0w’)
- GetTempPath: Retourne le chemin du dossier temporaire de l’utilisateur actuel
Conclusion
Voilà! Vous avez pu voir toute la puissance du namespace System.IO qui permet de manipuler fichiers et dossiers facilement.
Laisser un commentaire