Obtenir le nième caractère en Swift : comment ne pas faire chuter les performances

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

Introduction : Pourquoi travailler avec le système de fichiers en C# est nécessaire

\n

Toute application sérieuse sera tôt ou tard confrontée au besoin de sauvegarder des données. Que ce soit des fichiers de configuration, des journaux, des documents utilisateur ou des 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 examiner à l'aide d'exemples pratiques comment créer, lire, écrire et gérer des fichiers et dossiers en utilisant .NET. Vous apprendrez non seulement les opérations de base, mais aussi les bonnes pratiques pour la gestion des exceptions et le travail avec les flux.

\n\n

Classes principales pour travailler avec le système de fichiers

\n

Dans .NET, les espaces de noms System.IO et System.IO.Enumeration sont utilisés pour interagir avec le système de fichiers. Les principales classes dont vous aurez besoin sont :

\n
    \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 des répertoires.
  • \n
  • DirectoryInfo — classe d'instance pour travailler avec des 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
\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.

\n\n

Création, lecture et écriture de fichiers

\n\n

1. Création et écriture d'un fichier texte

\n

La 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.

\n
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.");
\n

Si vous avez besoin d'ajouter des données à la fin d'un fichier, utilisez File.AppendAllText :

\n
File.AppendAllText(path, "\\nLigne ajoutée.");
\n\n

2. Lecture d'un fichier

\n

Pour lire le texte entier, utilisez File.ReadAllText :

\n
string readContent = File.ReadAllText(path);\nConsole.WriteLine(readContent);
\n

Si le fichier est volumineux, il est préférable de le lire ligne par ligne en utilisant File.ReadLines (retourne IEnumerable<string>) :

\n
foreach (string line in File.ReadLines(path))\n{\n    Console.WriteLine(line);\n}
\n\n

3. Travail avec les fichiers binaires

\n

Pour les données binaires (images, archives), utilisez FileStream ou BinaryReader/BinaryWriter. Exemple d'écriture d'un tableau d'octets :

\n
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\n

Travail avec les dossiers et la gestion des fichiers

\n\n

1. Création et suppression de dossiers

\n

Vous pouvez créer un dossier en utilisant Directory.CreateDirectory. La méthode crée tous les dossiers manquants dans le chemin :

\n
string dirPath = @"C:\\temp\\MyApp\\Logs";\nDirectory.CreateDirectory(dirPath);\nConsole.WriteLine("Dossier créé.");
\n

Suppression d'un dossier (de manière récursive, avec tout son contenu) :

\n
if (Directory.Exists(dirPath))\n{\n    Directory.Delete(dirPath, true);\n    Console.WriteLine("Dossier supprimé.");\n}
\n\n

2. Copie et déplacement de fichiers

\n

Pour copier un fichier, utilisez File.Copy. Le troisième paramètre permet d'écraser un fichier existant :

\n
string sourceFile = @"C:\\temp\\example.txt";\nstring destFile = @"C:\\temp\\backup\\example.txt";\n\nDirectory.CreateDirectory(Path.GetDirectoryName(destFile));\nFile.Copy(sourceFile, destFile, overwrite: true);\nConsole.WriteLine("Fichier copié.");
\n

Pour déplacer un fichier, utilisez File.Move :

\n
string movedFile = @"C:\\temp\\archive\\example.txt";\nDirectory.CreateDirectory(Path.GetDirectoryName(movedFile));\nFile.Move(sourceFile, movedFile);\nConsole.WriteLine("Fichier déplacé.");
\n\n

Travail avec les chemins

\n

La classe Path fournit des méthodes pratiques pour travailler avec les chemins de fichiers. Exemples :

\n
string fullPath = @"C:\\temp\\MyApp\\Logs\\log.txt";\n\nConsole.WriteLine(Path.GetFileName(fullPath));       // log.txt\nConsole.WriteLine(Path.GetFileNameWithoutExtension(fullPath)); // log\nConsole.WriteLine(Path.GetExtension(fullPath));      // .txt\nConsole.WriteLine(Path.GetDirectoryName(fullPath));  // C:\\temp\\MyApp\\Logs\nConsole.WriteLine(Path.Combine(@"C:\\temp", "MyApp", "Logs", "log.txt")); // C:\\temp\\MyApp\\Logs\\log.txt
\n\n

Gestion des exceptions

\n

Lors du travail avec le système de fichiers, diverses exceptions peuvent survenir. Les principales sont :

\n
    \n
  • FileNotFoundException — le fichier n'a pas été trouvé.
  • \n
  • DirectoryNotFoundException — le répertoire n'a pas été trouvé.
  • \n
  • UnauthorizedAccessException — droits d'accès insuffisants.
  • \n
  • IOException — une erreur d'E/S générale (par exemple, le fichier est déjà utilisé).
  • \n
  • PathTooLongException — le chemin dépasse la limite système.
  • \n
\n

Exemple de gestion des exceptions :

\n
try\n{\n    string content = File.ReadAllText(@"C:\\temp\\missing.txt");\n    Console.WriteLine(content);\n}\ncatch (FileNotFoundException)\n{\n    Console.WriteLine("Fichier non trouvé.");\n}\ncatch (UnauthorizedAccessException)\n{\n    Console.WriteLine("Accès refusé.");\n}\ncatch (IOException ex)\n{\n    Console.WriteLine($"Erreur d'E/S : {ex.Message}");\n}
\n\n

Travail avec les flux

\n

Pour une gestion plus flexible des fichiers, utilisez les flux. Exemple de lecture d'un fichier en utilisant FileStream et StreamReader :

\n
using (FileStream fs = new FileStream(@"C:\\temp\\example.txt", FileMode.Open, FileAccess.Read))\nusing (StreamReader reader = new StreamReader(fs))\n{\n    string line;\n    while ((line = reader.ReadLine()) != null)\n    {\n        Console.WriteLine(line);\n    }\n}
\n

Exemple d'écriture en utilisant StreamWriter :

\n
using (StreamWriter writer = new StreamWriter(@"C:\\temp\\output.txt", append: false))\n{\n    writer.WriteLine("Première ligne.");\n    writer.WriteLine("Deuxième ligne.");\n}\nConsole.WriteLine("Enregistrement terminé.");
\n\n

Conclusion

\n

Dans cet article, nous avons couvert les bases du travail avec le système de fichiers en C#. Vous avez appris à créer, lire, écrire des fichiers, gérer des dossiers, travailler avec des chemins et gérer les exceptions. Ces compétences vous seront utiles dans presque tous les projets — des petits utilitaires aux grandes applications d'entreprise. Pour approfondir, je vous recommande d'explorer l'espace de noms System.IO.Compression pour travailler avec les archives et System.IO.MemoryMappedFiles pour un travail efficace avec les gros fichiers.

Blogs

Book Recommendations