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.
Créez un exemple de fichier texte dans le Bloc-notes. Procédez comme suit :
- Collez le texte hello world dans le Bloc-notes.
- Enregistrez le fichier sous Sample.txt.
Démarrez Microsoft Visual Studio.
Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.
Sélectionnez Projets Visual C# sous Types de projets, puis sélectionnez Application console sous Modèles.
Ajoutez le code suivant au début du fichier Class1.cs :
using System.IO;
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."); }
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.
Démarrez Visual Studio.
Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.
Sélectionnez Projets Visual C# sous Types de projets, puis sélectionnez Application console sous Modèles.
Ajoutez le code suivant au début du fichier Class1.cs :
using System.IO;
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."); }
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.
Démarrez Visual Studio.
On the File menu, point to New, and then click Project.
Cliquez sur Projets Visual C# sous Types de projets, puis sur Application console sous Modèles.
Ajoutez le code suivant au début du fichier Class1.cs :
using System.IO; using System.Text;
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."); }
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.