Comment parcourir chaque ligne d'un TextReader ?[dupliquer]
-
12-12-2019 - |
Question
Doublon possible :
C# Lire un fichier ligne par ligne
Comment parcourir les lignes d'un TextReader ?
On me donne un .NET Lecteur de texte (une classe capable de lire une série séquentielle de caractères).Comment puis-je parcourir son contenu par ligne ?
La solution
Voulez-vous dire quelque chose comme ça?
string line = null;
while((line = reader.ReadLine()) != null)
{
// do something with line
}
Autres conseils
Vous pouvez créer très facilement une méthode d'extension afin de pouvoir utiliser foreach
:
public static IEnumerable<string> ReadLines(this TextReader reader)
{
string line = null;
while((line = reader.ReadLine()) != null)
{
yield return line;
}
}
Notez que ceci ne le fera pas fermez le lecteur pour vous à la fin.
Vous pouvez alors utiliser :
foreach (string line in reader.ReadLines())
MODIFIER:Comme indiqué dans les commentaires, c'est paresseux.Il ne lira qu'une ligne à la fois, plutôt que de lire toutes les lignes en mémoire.
La solution non paresseuse que j'ai pour le moment:
foreach(string line in source.ReadToEnd().Split(Environment.NewLine.ToArray(),StringSplitOptions.None))
Vous l'utiliseriez comme ceci:
string line;
while ((line = myTextReader.ReadLine()) != null)
{
//do whatever with "line";
}
ou
string Myfile = @"C:\MyDocument.txt";
using(FileStream fs = new FileStream(Myfile, FileMode.Open, FileAccess.Read))
{
using(StreamReader sr = new StreamReader(fs))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
}