Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Lecture des Fichiers à l'Aide de StreamReader | Structures Supplémentaires et Gestion des Fichiers
C# au-delà des Bases
course content

Contenu du cours

C# au-delà des Bases

C# au-delà des Bases

1. Structures Supplémentaires et Gestion des Fichiers
2. Structures et Énumérateurs
3. Introduction à la Programmation Orientée Objet (POO)
4. Essentiels de la POO
5. Principes de la POO

book
Lecture des Fichiers à l'Aide de StreamReader

Nous pouvons ouvrir et lire des fichiers en utilisant le langage de programmation C#.

Pour lire un fichier, nous créons un nouvel objet StreamReader. L'objet StreamReader prend en entrée le chemin du fichier.

cs

index

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

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

Par exemple, nous voulons ouvrir un fichier "text.txt" sur le Bureau qui a le chemin C:/Users/Admin/Desktop/text.txt :

cs

index

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

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

txt

text

copy
12345
This is some example text

Un objet StreamReader a une méthode ReadLine qui lit une ligne du fichier et la renvoie :

cs

index

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

Sortie :

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

cs

index

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 :

Pour lire toutes les lignes d'un fichier, nous pouvons utiliser la boucle while avec une condition qui vérifie si la ligne suivante est null ou non. Voici une manière simple de le faire :

cs

index

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 :

Nous pouvons rendre le code ci-dessus un peu plus propre en utilisant une astuce, pour cela, examinons les instructions d'affectation. Une instruction d'affectation a également une valeur de retour, qui est la valeur qui est assignée. Cela peut être compris avec un exemple :

cs

index

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

Sortie :

Il affiche 7 parce que l'instruction a = 7 retourne 7, qui est la valeur assignée à a.

Nous pouvons utiliser cette information pour faire des choses créatives comme assigner la même valeur à plusieurs variables dans une seule instruction :

cs

index

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 :

En utilisant ces informations, nous pouvons modifier le code de lecture de fichier pour le rendre plus court en supprimant le code inutile :

cs

index

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, nous avons d'abord utilisé une instruction d'affectation line = textFile.ReadLine() 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 avoir lu le fichier, nous devons également le fermer en utilisant la méthode Close, sinon cela peut potentiellement causer des fuites de mémoire ou le fichier peut être verrouillé et devenir inaccessible depuis d'autres endroits tant que le programme est en cours d'exécution.

Le code final ressemblera à ceci :

cs

index

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
We're sorry to hear that something went wrong. What happened?
some-alt