File

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);
                }

            }

System.IO DriveInfo

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.

System.IO DirectoryInfo-GetDirectories

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.

Auteur : Daniel MINKO FASSINOU

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.