Lecture 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.
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
1StreamReader 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
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
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
12345This is some example text
Un objet StreamReader
possède une méthode ReadLine
qui lit une ligne du fichier et la retourne :
index.cs
1234var 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
12345678var 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
12345678var 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
12int 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
123456789int 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
1234567var 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
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Lecture 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.
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
1StreamReader 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
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
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
12345This is some example text
Un objet StreamReader
possède une méthode ReadLine
qui lit une ligne du fichier et la retourne :
index.cs
1234var 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
12345678var 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
12345678var 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
12int 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
123456789int 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
1234567var 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
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Merci pour vos commentaires !