C# et les fichiers : du débutant au maître de la gestion du système de fichiers

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi savoir travailler avec les fichiers en C# est un super-pouvoir ?

\n\n

Imaginez que vous écrivez un programme qui doit sauvegarder les paramètres utilisateur, journaliser les erreurs ou traiter des milliers de documents. Sans compétences en gestion du système de fichiers, vous vous heurterez à un mur. En C#, travailler avec les fichiers n'est pas seulement une lecture ennuyeuse de lignes. C'est une opportunité de créer des utilitaires puissants, des analyseurs syntaxiques et même des mini-bases de données.

\n\n

Dans cet article, nous allons tout détailler : du banal File.ReadAllText au travail avancé avec les flux et les dossiers. Vous apprendrez comment ne pas perdre de données, comment optimiser la lecture de gros fichiers et comment contourner les « pièges » du système de fichiers. C'est parti !

\n\n

Les classes héroïques : File, FileInfo, Directory et Path

\n\n

Dans .NET, il existe deux approches pour travailler avec les fichiers : les méthodes statiques de la classe File et les méthodes d'instance de la classe FileInfo. La première est pour les opérations rapides « lire-écrire », la seconde est lorsque vous devez travailler avec un seul fichier longtemps et en conservant l'état.

\n\n

File vs FileInfo : quand utiliser quoi ?

\n\n

File est une classe statique. Vous écrivez File.Exists("test.txt") – et c'est fait. Pratique, mais à chaque opération, le système vérifie à nouveau le chemin.

\n\n

FileInfo – vous créez l'objet une fois, puis vous appelez les méthodes. C'est plus rapide si vous effectuez plusieurs actions sur un même fichier.

\n\n
// Méthode rapide\nif (File.Exists(@"C:\\data\\log.txt"))\n{\n    string content = File.ReadAllText(@"C:\\data\\log.txt");\n    Console.WriteLine(content);\n}\n\n// Méthode professionnelle\nFileInfo fileInfo = new FileInfo(@"C:\\data\\log.txt");\nif (fileInfo.Exists)\n{\n    using (StreamReader reader = fileInfo.OpenText())\n    {\n        string content = reader.ReadToEnd();\n        Console.WriteLine(content);\n    }\n}\n
\n\n

La classe Directory fonctionne sur le même principe – des méthodes statiques pour des opérations rapides sur les dossiers. Path est un assistant indispensable pour concaténer les chemins : Path.Combine("folder", "file.txt") place automatiquement la barre oblique correcte.

\n\n

Lecture de fichiers : du petit au gigantesque

\n\n

La lecture de fichiers en C# est un art de l'équilibre entre simplicité et performance. Détaillons trois niveaux.

\n\n

Niveau 1 : Tout d'un coup (pour les petits fichiers)

\n\n

Si le fichier pèse jusqu'à 10 Mo, utilisez sans crainte ReadAllText ou ReadAllLines.

\n\n
string text = File.ReadAllText("config.json");\nstring[] lines = File.ReadAllLines("users.csv");\n
\n\n

Inconvénient : avec un gros fichier, vous risquez d'obtenir une OutOfMemoryException.

\n\n

Niveau 2 : Lecture ligne par ligne (pour les fichiers moyens)

\n\n

Utilisons StreamReader – nous lisons ligne par ligne, sans tout charger en mémoire.

\n\n
using (StreamReader reader = new StreamReader("big_log.txt"))\n{\n    string line;\n    while ((line = reader.ReadLine()) != null)\n    {\n        Console.WriteLine(line); // Traitement de chaque ligne\n    }\n}\n
\n\n

Notez le using – il garantit que le fichier se ferme, même en cas d'erreur.

\n\n

Niveau 3 : Lecture de données binaires (pour les pros)

\n\n

Travailler avec des images, des archives ou tout fichier non textuel nécessite FileStream.

\n\n
using (FileStream fs = new FileStream("photo.jpg", FileMode.Open, FileAccess.Read))\n{\n    byte[] buffer = new byte[1024];\n    int bytesRead;\n    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)\n    {\n        // Traitement du bloc de données\n        Console.WriteLine($"Lu {bytesRead} octets");\n    }\n}\n
\n\n

Écriture de fichiers : comment ne pas perdre de données

\n\n

L'écriture en C# n'est pas seulement File.WriteAllText. Il est important de comprendre les modes : créer un nouveau fichier, ajouter à la fin ou écraser.

\n\n

Les modes principaux de FileMode

\n
    \n
  • CreateNew<

Blogs

Book Recommendations