Introduction : pourquoi travailler avec le système de fichiers en C#
\nToute application sérieuse rencontre tôt ou tard la nécessité de sauvegarder des données. Qu'il s'agisse de fichiers de configuration, de journaux, de documents utilisateur ou de données temporaires — travailler avec le système de fichiers est une compétence fondamentale pour un développeur C#. Dans cet article, nous allons voir à travers des exemples pratiques comment créer, lire, écrire et gérer des fichiers et dossiers avec .NET. Vous apprendrez non seulement les opérations de base, mais aussi les meilleures pratiques de gestion des exceptions et de travail avec les flux.
\n\nClasses principales pour travailler avec le système de fichiers
\nDans .NET, les espaces de noms System.IO et System.IO.Enumeration sont utilisés pour interagir avec le système de fichiers. Les classes clés dont vous aurez besoin :
- \n
File— méthodes statiques pour créer, copier, supprimer et déplacer des fichiers. \n FileInfo— classe d'instance pour travailler avec un fichier spécifique (prend en charge les mêmes opérations mais nécessite la création d'un objet). \n Directory— méthodes statiques pour travailler avec les répertoires. \n DirectoryInfo— classe d'instance pour travailler avec les répertoires. \n Path— classe utilitaire pour travailler avec les chemins (combinaison, obtention de l'extension, du nom, etc.). \n FileStream— flux de bas niveau pour lire/écrire des octets. \n StreamReader/StreamWriter— wrappers de haut niveau pour travailler avec du texte. \n
Le choix entre les méthodes statiques et les classes d'instance dépend du scénario. Si vous devez effectuer une seule opération — utilisez File ou Directory. Si plusieurs opérations sont prévues sur le même objet — créez un FileInfo ou DirectoryInfo.
Création, lecture et écriture de fichiers
\n\n1. Création et écriture d'un fichier texte
\nLa façon la plus simple d'écrire du texte dans un fichier est d'utiliser la méthode File.WriteAllText. Elle crée le fichier (ou écrase un fichier existant) et ferme le flux automatiquement.
using System.IO;\n\nstring path = @"C:\\temp\\example.txt";\nstring content = "Bonjour le monde ! Ceci est un fichier test.";\n\nFile.WriteAllText(path, content);\nConsole.WriteLine("Fichier créé et écrit.");\nSi vous devez ajouter des données à la fin du fichier, utilisez File.AppendAllText :
File.AppendAllText(path, "\\nLigne ajoutée.");\n\n2. Lecture d'un fichier
\nPour lire tout le texte, utilisez File.ReadAllText :
string readContent = File.ReadAllText(path);\nConsole.WriteLine(readContent);\nSi le fichier est volumineux, il est préférable de lire ligne par ligne avec File.ReadLines (retourne un IEnumerable<string>) :
foreach (string line in File.ReadLines(path))\n{\n Console.WriteLine(line);\n}\n\n3. Travail avec les fichiers binaires
\nPour les données binaires (images, archives), utilisez FileStream ou BinaryReader/BinaryWriter. Exemple d'écriture d'un tableau d'octets :
byte[] data = { 0x48, 0x65, 0x6C, 0x6C, 0x6F }; // "Hello"\nFile.WriteAllBytes(@"C:\\temp\\binary.dat", data);\n\nbyte[] readData = File.ReadAllBytes(@"C:\\temp\\binary.dat");\nConsole.WriteLine(BitConverter.ToString(readData)); // 48-65-6C-6C-6F\n\nTravail avec les dossiers et gestion des fichiers
\n\n1. Création et suppression de dossiers
\nVous pouvez créer un dossier avec Directory.CreateDirectory. La méthode crée tous les dossiers manquants dans le chemin :
string dirPath = @"C:\\temp\\MyApp\\Logs";\nDirectory.CreateDirectory(dirPath);\nConsole.WriteLine("Dossier créé.");\nSuppression d'un dossier (récursive, avec tout son contenu) :
\nif (Directory.Exists(dirPath))\n{\n Directory.Delete(dirPat