Utiliser Visual C# pour lire et écrire dans un fichier texte

Cet article vous aide à lire et à écrire dans un fichier texte à l’aide de Visual C#.

Version de produit d’origine : Visual Studio
Numéro de l’article d’origine dans la base de connaissances : 816149

Résumé

La section Lire un fichier texte de cet article décrit comment utiliser la classe StreamReader pour lire un fichier texte. Les sections Écrire un fichier texte (exemple 1) et Écrire un fichier texte (exemple 2) décrivent comment utiliser la classe StreamWriter pour écrire du texte dans un fichier.

Lire un fichier texte

Le code suivant utilise la classe StreamReader pour ouvrir, lire et fermer le fichier texte. Vous pouvez transmettre le chemin d’accès d’un fichier texte au constructeur StreamReader pour ouvrir le fichier automatiquement. La méthode ReadLine lit chaque ligne de texte et incrémente le pointeur de fichier vers la ligne suivante au fur et à mesure de la lecture. Lorsque la méthode ReadLine atteint la fin du fichier, elle renvoie une référence null. Pour plus d’informations, consultez l’article Classe StreamReader.

  1. Créez un exemple de fichier texte dans le Bloc-notes. Procédez comme suit :

    1. Collez le texte hello world dans le Bloc-notes.
    2. Enregistrez le fichier sous Sample.txt.
  2. Démarrez Microsoft Visual Studio.

  3. Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.

  4. Sélectionnez Projets Visual C# sous Types de projets, puis sélectionnez Application console sous Modèles.

  5. Ajoutez le code suivant au début du fichier Class1.cs :

    using System.IO;
    
  6. Ajoutez le code suivant à la méthode Main :

    String line;
    try
    {
        //Pass the file path and file name to the StreamReader constructor
        StreamReader sr = new StreamReader("C:\\Sample.txt");
        //Read the first line of text
        line = sr.ReadLine();
        //Continue to read until you reach end of file
        while (line != null)
        {
            //write the line to console window
            Console.WriteLine(line);
            //Read the next line
            line = sr.ReadLine();
        }
        //close the file
        sr.Close();
        Console.ReadLine();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  7. Dans le menu Déboguer, sélectionnez Démarrer pour compiler et exécuter l’application. Appuyez sur ENTRÉE pour fermer la fenêtre Console. La fenêtre Console affiche le contenu du fichier Sample.txt :

    Hello world
    

Écrire un fichier texte (exemple 1)

Le code suivant utilise la classe StreamWriter pour ouvrir, écrire et fermer le fichier texte. De la même manière qu’avec la classe StreamReader, vous pouvez transmettre le chemin d’accès d’un fichier texte au constructeur StreamWriter pour ouvrir le fichier automatiquement. La méthode WriteLine écrit une ligne de texte complète dans le fichier texte.

  1. Démarrez Visual Studio.

  2. Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.

  3. Sélectionnez Projets Visual C# sous Types de projets, puis sélectionnez Application console sous Modèles.

  4. Ajoutez le code suivant au début du fichier Class1.cs :

    using System.IO;
    
  5. Ajoutez le code suivant à la méthode Main :

    try
    {
        //Pass the filepath and filename to the StreamWriter Constructor
        StreamWriter sw = new StreamWriter("C:\\Test.txt");
        //Write a line of text
        sw.WriteLine("Hello World!!");
        //Write a second line of text
        sw.WriteLine("From the StreamWriter class");
        //Close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Dans le menu Déboguer, sélectionnez Démarrer pour compiler et exécuter l’application. Ce code crée un fichier nommé Test.txt sur le lecteur C. Ouvrez Test.txt dans un éditeur de texte tel que le Bloc-notes. Le fichier Test.txt contient deux lignes de texte :

    Hello World!!
    From the StreamWriter class
    

Écrire un fichier texte (exemple 2)

Le code suivant utilise la classe StreamWriter pour ouvrir, écrire et fermer le fichier texte. Contrairement à l’exemple précédent, ce code transmet deux paramètres supplémentaires au constructeur. Le premier paramètre est le chemin d’accès au fichier et le nom du fichier. Le deuxième paramètre, true, indique que le fichier est ouvert en mode Ajout. Si vous spécifiez false pour le deuxième paramètre, le contenu du fichier est remplacé chaque fois que vous exécutez le code. Le troisième paramètre spécifie Unicode, afin que StreamWriter encode le fichier au format Unicode. Vous pouvez également spécifier les méthodes de codage suivantes pour le troisième paramètre :

  • ASC11
  • Unicode
  • UTF7
  • UTF8

La méthode Write est similaire à la méthode WriteLine, à la différence près que la méthode Write n’incorpore pas automatiquement une combinaison de caractères retour chariot ou saut de ligne (CR/LF). Elle est utile si vous souhaitez écrire un caractère à la fois.

  1. Démarrez Visual Studio.

  2. On the File menu, point to New, and then click Project.

  3. Cliquez sur Projets Visual C# sous Types de projets, puis sur Application console sous Modèles.

  4. Ajoutez le code suivant au début du fichier Class1.cs :

    using System.IO;
    using System.Text;
    
  5. Ajoutez le code suivant à la méthode Main :

    Int64 x;
    try
    {
        //Open the File
        StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
    
        //Write out the numbers 1 to 10 on the same line.
        for(x=0; x < 10; x++)
        {
        sw.Write(x);
        }
    
        //close the file
        sw.Close();
    }
    catch(Exception e)
    {
        Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
        Console.WriteLine("Executing finally block.");
    }
    
  6. Dans le menu Déboguer, sélectionnez Démarrer pour compiler et exécuter l’application. Ce code crée un fichier nommé Test1.txt sur le lecteur C. Ouvrez Test1.txt dans un éditeur de texte tel que le Bloc-notes. Le fichier Test1.txt contient une seule ligne de texte : 0123456789.

Liste de code complète pour la lecture d’un fichier texte

//Read a Text File
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            String line;
            try
            {
                //Pass the file path and file name to the StreamReader constructor
                StreamReader sr = new StreamReader("C:\\Sample.txt");
                //Read the first line of text
                line = sr.ReadLine();
                //Continue to read until you reach end of file
                while (line != null)
                {
                    //write the line to console window
                    Console.WriteLine(line);
                    //Read the next line
                    line = sr.ReadLine();
                }
                //close the file
                sr.Close();
                Console.ReadLine();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Liste de code complète pour l’écriture d’un fichier texte (version 1)

//Write a text file - Version-1
using System;
using System.IO;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                //Pass the filepath and filename to the StreamWriter Constructor
                StreamWriter sw = new StreamWriter("C:\\Test.txt");
                //Write a line of text
                sw.WriteLine("Hello World!!");
                //Write a second line of text
                sw.WriteLine("From the StreamWriter class");
                //Close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Liste de code complète pour l’écriture d’un fichier texte (version 2)

//Write a text file - Version 2
using System;
using System.IO;
using System.Text;
namespace readwriteapp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Int64 x;
            try
            {
                //Open the File
                StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);
                //Writeout the numbers 1 to 10 on the same line.
                for(x=0; x < 10; x++)
                {
                    sw.Write(x);
                }
                //close the file
                sw.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
            finally
            {
                Console.WriteLine("Executing finally block.");
            }
        }
    }
}

Résoudre des problèmes

Pour toutes les manipulations de fichiers, une bonne pratique de programmation consiste à inclure le code dans un bloc try-catch-finally pour gérer les erreurs et les exceptions. Plus particulièrement, vous pouvez libérer des handles dans le fichier dans le bloc final afin que le fichier ne soit pas verrouillé indéfiniment. Un fichier inexistant ou un fichier en cours d’utilisation font partie des erreurs possibles.