Travailler avec le système de fichiers en C# : des bases aux techniques avancées
Travailler avec le système de fichiers est l'une des tâches clés lors du développement d'applications en C#. Qu'il s'agisse de sauvegarder des données utilisateur, de lire des fichiers de configuration ou de traiter des journaux — la capacité à interagir efficacement avec les fichiers et les répertoires est essentielle pour tout développeur .NET. Dans cet article, nous allons passer en revue les classes principales de l'espace de noms System.IO, apprendre à créer, lire et modifier des fichiers, et examiner les meilleures pratiques de gestion des erreurs.
1. Classes principales pour travailler avec le système de fichiers
Dans .NET, plusieurs classes clés sont prévues pour travailler avec les fichiers et les répertoires. Examinons-les en détail.
Classe File et FileInfo
File est une classe statique qui fournit des méthodes pour créer, copier, supprimer et déplacer des fichiers. FileInfo est une classe d'instance qui permet de travailler avec un fichier spécifique.
using System.IO;
// Utilisation de la classe statique Filestring path = @"C:\\Temp\\test.txt";if (File.Exists(path)){ string content = File.ReadAllText(path); Console.WriteLine(content);}
// Utilisation de FileInfoFileInfo fileInfo = new FileInfo(path);if (fileInfo.Exists){ Console.WriteLine($"Taille du fichier : {fileInfo.Length} octets"); Console.WriteLine($"Date de création : {fileInfo.CreationTime}");}Classe Directory et DirectoryInfo
De même, Directory est une classe statique pour les opérations sur les répertoires, et DirectoryInfo pour travailler avec un dossier spécifique.
string dirPath = @"C:\\Temp\\MyFolder";
// Création d'un répertoireDirectory.CreateDirectory(dirPath);
// Obtention d'informations sur le répertoireDirectoryInfo dirInfo = new DirectoryInfo(dirPath);if (dirInfo.Exists){ Console.WriteLine($"Sous-répertoires : {dirInfo.GetDirectories().Length}"); Console.WriteLine($"Fichiers : {dirInfo.GetFiles().Length}");}Classe Path
Path est une classe utilitaire pour travailler avec les chemins. Elle aide à combiner des chemins, extraire des extensions et des noms de fichiers.
string fullPath = @"C:\\Temp\\myfile.txt";string fileName = Path.GetFileName(fullPath); // myfile.txtstring extension = Path.GetExtension(fullPath); // .txtstring directory = Path.GetDirectoryName(fullPath); // C:\\Tempstring combined = Path.Combine(@"C:\\Temp", "newfile.txt"); // C:\\Tempewfile.txt2. Lecture et écriture de fichiers
En C#, il existe plusieurs façons de lire et d'écrire des fichiers. Le choix dépend de la taille des données et des performances requises.
Lecture de fichiers texte
Pour les petits fichiers, il est pratique d'utiliser des méthodes en une ligne :
// Lecture de tout le fichier en une lignestring text = File.ReadAllText("data.txt");
// Lecture de toutes les lignes dans un tableaustring[] lines = File.ReadAllLines("data.txt");
// Lecture avec StreamReader (pour les gros fichiers)using (StreamReader reader = new StreamReader("largefile.txt")){ string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); }}Écriture dans des fichiers
// Écriture d'une chaîneFile.WriteAllText("output.txt", "Hello, World!");
// Écriture d'un tableau de chaînesstring[] lines = { "Première ligne", "Deuxième ligne" };File.WriteAllLines("output.txt", lines);
// Ajout à la fin d'un fichierFile.AppendAllText("log.txt", $"{DateTime.Now}: Nouvelle entrée");
// Écriture avec StreamWriterusing (StreamWriter writer = new StreamWriter("data.txt", append: true)){ writer.WriteLine("Nouvelle ligne");}Travail avec des fichiers binaires
Pour les données binaires, utilisez FileStream et BinaryReader/BinaryWriter :
// Écriture de données binairesusing (BinaryWriter writer = new BinaryWriter(File.Open("data.bin"
```