Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Lecture de Fichiers à l'Aide de StreamReader | Structures de Données et Gestion des Fichiers
C# Au-Delà des Bases

bookLecture de Fichiers à l'Aide de StreamReader

Vous pouvez ouvrir et lire des fichiers en utilisant le langage de programmation C#.

Pour lire un fichier, il faut créer un nouvel objet StreamReader. L’objet StreamReader prend en paramètre le chemin du fichier.

Note
Remarque

Le terme « objet » sera clarifié dans les sections suivantes, mais pour la compréhension actuelle — un objet est simplement une instance d’un type de données, et StreamReader est un type de données tout comme int ou float. Ainsi, les valeurs 1, 2.5f et "Hello World" peuvent techniquement être considérées comme des « objets » des types de données int, float et string respectivement.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Ici, fileVarName représente le nom de la variable dans laquelle l'objet StreamReader sera stocké, et fullPath doit être le chemin complet du fichier sous forme de chaîne de caractères.

Par exemple, pour ouvrir un fichier "text.txt" sur le Bureau ayant le chemin C:/Users/Admin/Desktop/text.txt :

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Remarque

Il est également possible d'utiliser une déclaration implicite pour rendre la syntaxe légèrement plus concise : var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Considérez que le fichier text.txt contient le contenu suivant :

text.txt

text.txt

copy
12345
This is some example text

Un objet StreamReader possède une méthode ReadLine qui lit une ligne du fichier et la retourne :

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Sortie :

This

La méthode ReadLine déplace automatiquement le curseur à la ligne suivante, donc lorsqu'elle est appelée à nouveau, elle lit la ligne suivante si elle existe, sinon elle retourne simplement null (rien) :

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL

Sortie :

This
is
some
example
text

Pour lire toutes les lignes d’un fichier, il est possible d’utiliser la boucle while avec une condition vérifiant si la ligne suivante est null ou non. Voici une méthode simple pour y parvenir :

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Sortie :

This
is
some
example
text

Il est possible de rendre le code ci-dessus un peu plus élégant en utilisant une astuce ; pour cela, examinons les instructions d'affectation. Une instruction d'affectation possède également une valeur de retour, qui correspond à la valeur assignée. Cela peut être illustré par un exemple :

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Sortie :

7

Il affiche 7 car l’instruction a = 7 retourne 7, qui est la valeur assignée à a.

Cette information permet d’effectuer des opérations créatives, comme assigner la même valeur à plusieurs variables dans une seule instruction :

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Sortie :

9
9
9

En utilisant ces informations, il est possible de modifier le code de lecture de fichier afin de le raccourcir en supprimant le code superflu :

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

À l'intérieur de la condition, une instruction d'affectation line = textFile.ReadLine() est d'abord utilisée, ce qui met automatiquement à jour la variable line puis vérifie si elle est nulle à partir de la valeur de retour de l'instruction.

Après la lecture du fichier, il est également nécessaire de le fermer à l'aide de la méthode Close, sinon cela peut potentiellement entraîner des fuites de mémoire ou le fichier peut rester verrouillé et devenir inaccessible depuis d'autres emplacements tant que le programme est en cours d'exécution.

Le code final ressemblera à ceci :

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain how the assignment inside the while loop works?

What happens if I forget to close the StreamReader?

Can you show how to handle errors when reading a file?

Awesome!

Completion rate improved to 2.04

bookLecture de Fichiers à l'Aide de StreamReader

Glissez pour afficher le menu

Vous pouvez ouvrir et lire des fichiers en utilisant le langage de programmation C#.

Pour lire un fichier, il faut créer un nouvel objet StreamReader. L’objet StreamReader prend en paramètre le chemin du fichier.

Note
Remarque

Le terme « objet » sera clarifié dans les sections suivantes, mais pour la compréhension actuelle — un objet est simplement une instance d’un type de données, et StreamReader est un type de données tout comme int ou float. Ainsi, les valeurs 1, 2.5f et "Hello World" peuvent techniquement être considérées comme des « objets » des types de données int, float et string respectivement.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Ici, fileVarName représente le nom de la variable dans laquelle l'objet StreamReader sera stocké, et fullPath doit être le chemin complet du fichier sous forme de chaîne de caractères.

Par exemple, pour ouvrir un fichier "text.txt" sur le Bureau ayant le chemin C:/Users/Admin/Desktop/text.txt :

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Remarque

Il est également possible d'utiliser une déclaration implicite pour rendre la syntaxe légèrement plus concise : var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Considérez que le fichier text.txt contient le contenu suivant :

text.txt

text.txt

copy
12345
This is some example text

Un objet StreamReader possède une méthode ReadLine qui lit une ligne du fichier et la retourne :

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Sortie :

This

La méthode ReadLine déplace automatiquement le curseur à la ligne suivante, donc lorsqu'elle est appelée à nouveau, elle lit la ligne suivante si elle existe, sinon elle retourne simplement null (rien) :

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL

Sortie :

This
is
some
example
text

Pour lire toutes les lignes d’un fichier, il est possible d’utiliser la boucle while avec une condition vérifiant si la ligne suivante est null ou non. Voici une méthode simple pour y parvenir :

index.cs

index.cs

copy
12345678
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }

Sortie :

This
is
some
example
text

Il est possible de rendre le code ci-dessus un peu plus élégant en utilisant une astuce ; pour cela, examinons les instructions d'affectation. Une instruction d'affectation possède également une valeur de retour, qui correspond à la valeur assignée. Cela peut être illustré par un exemple :

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Sortie :

7

Il affiche 7 car l’instruction a = 7 retourne 7, qui est la valeur assignée à a.

Cette information permet d’effectuer des opérations créatives, comme assigner la même valeur à plusieurs variables dans une seule instruction :

index.cs

index.cs

copy
123456789
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

Sortie :

9
9
9

En utilisant ces informations, il est possible de modifier le code de lecture de fichier afin de le raccourcir en supprimant le code superflu :

index.cs

index.cs

copy
1234567
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }

À l'intérieur de la condition, une instruction d'affectation line = textFile.ReadLine() est d'abord utilisée, ce qui met automatiquement à jour la variable line puis vérifie si elle est nulle à partir de la valeur de retour de l'instruction.

Après la lecture du fichier, il est également nécessaire de le fermer à l'aide de la méthode Close, sinon cela peut potentiellement entraîner des fuites de mémoire ou le fichier peut rester verrouillé et devenir inaccessible depuis d'autres emplacements tant que le programme est en cours d'exécution.

Le code final ressemblera à ceci :

index.cs

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 6
some-alt