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 de toute application. En C# (.NET), il existe à cet effet l'espace de noms puissant System.IO, qui fournit au développeur un ensemble complet d'outils pour créer, lire, écrire, déplacer et supprimer des fichiers et dossiers. Dans cet article, nous allons détailler toutes les opérations de base avec le système de fichiers, en commençant par des exemples simples et en terminant par des techniques avancées de traitement de données.
Les bases du travail avec les fichiers en C#
L'espace de noms System.IO inclut les classes File et FileInfo, qui fournissent des méthodes statiques et d'instance pour gérer les fichiers. Examinons les opérations de base.
Lecture et écriture de fichiers texte
La façon la plus simple de travailler avec des fichiers texte est d'utiliser les méthodes statiques de la classe File :
using System.IO;
// Écriture de texte dans un fichier (crée un nouveau fichier ou écrase un fichier existant)string content = "Bonjour le monde ! Ceci est un exemple de travail avec les fichiers en C#.";File.WriteAllText(@"C:\\temp\\example.txt", content);
// Lecture de tout le texte d'un fichierstring readContent = File.ReadAllText(@"C:\\temp\\example.txt");Console.WriteLine(readContent);
// Ajout à la fin du fichierFile.AppendAllText(@"C:\\temp\\example.txt", "Nouvelle ligne ajoutée.");Travail avec les fichiers binaires
Pour travailler avec des données binaires, utilisez File.ReadAllBytes et File.WriteAllBytes :
byte[] binaryData = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F };File.WriteAllBytes(@"C:\\temp\\binary.bin", binaryData);
byte[] readBinary = File.ReadAllBytes(@"C:\\temp\\binary.bin");Console.WriteLine(string.Join(", ", readBinary)); // Sortie : 72, 101, 108, 108, 111Vérification de l'existence d'un fichier et sa suppression
Avant d'effectuer des opérations sur les fichiers, il est toujours utile de vérifier leur existence :
string filePath = @"C:\\temp\\example.txt";
if (File.Exists(filePath)){ Console.WriteLine("Le fichier existe. Suppression en cours..."); File.Delete(filePath); Console.WriteLine("Fichier supprimé.");}else{ Console.WriteLine("Fichier non trouvé.");}Travail avec les répertoires en C#
Pour gérer les dossiers, on utilise les classes Directory et DirectoryInfo. Elles permettent de créer, déplacer, renommer et supprimer des répertoires, ainsi que d'obtenir des informations à leur sujet.
Création et suppression de dossiers
string dirPath = @"C:\\temp\\MyNewFolder";
// Création d'un dossier (s'il existe déjà, aucune exception n'est levée)Directory.CreateDirectory(dirPath);
// Vérification de l'existenceif (Directory.Exists(dirPath)){ Console.WriteLine("Dossier créé avec succès.");}
// Suppression d'un dossier (deuxième paramètre - suppression récursive ou non)Directory.Delete(dirPath, recursive: true);Console.WriteLine("Dossier supprimé.");Obtention de la liste des fichiers et sous-dossiers
Les méthodes GetFiles et GetDirectories permettent d'obtenir le contenu d'un répertoire :
string targetDir = @"C:\\temp";
// Obtention de tous les fichiers du répertoirestring[] files = Directory.GetFiles(targetDir);Console.WriteLine("Fichiers dans le répertoire :");foreach (string file in files){ Console.WriteLine($" {Path.GetFileName(file)}");}
// Obtention de tous les sous-dossiersstring[] subDirs = Directory.GetDirectories(targetDir);Console.WriteLine("Sous-dossiers :");foreach (string dir in subDirs){ Console.WriteLine($" {Path.GetFileName(dir)}");}
// Recherche par motif (par exemple, tous les fichiers texte)string[] txtFiles = Directory.GetFiles(targetDir, "*.txt");Console.WriteLine($"Trouvé {txtFiles.Length} fichiers texte.");Travail avec DirectoryInfo
La classe DirectoryInfo