Как перебрать каждую строку из TextReader?[дубликат]
-
12-12-2019 - |
Вопрос
Возможный дубликат:
C# чтение файла построчно
Как перебирать строки из TextReader?
Мне дали .NET TextReader (класс, который может читать последовательную серию символов).Как я могу перебирать его содержимое построчно?
Решение
Вы имеете в виду что-то вроде этого?
string line = null;
while((line = reader.ReadLine()) != null)
{
// do something with line
}
Другие советы
Вы можете очень легко создать метод расширения, чтобы вы могли использовать foreach
:
public static IEnumerable<string> ReadLines(this TextReader reader)
{
string line = null;
while((line = reader.ReadLine()) != null)
{
yield return line;
}
}
Обратите внимание, что это не будет закройте читалку в конце.
Затем вы можете использовать:
foreach (string line in reader.ReadLines())
РЕДАКТИРОВАТЬ:Как отмечается в комментариях, это лениво.Он будет читать только одну строку за раз, а не считывать все строки в память.
Неленивое решение, которое у меня есть на данный момент:
foreach(string line in source.ReadToEnd().Split(Environment.NewLine.ToArray(),StringSplitOptions.None))
Вы бы использовали это так:
string line;
while ((line = myTextReader.ReadLine()) != null)
{
//do whatever with "line";
}
ИЛИ
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());
}
}
}
Не связан с StackOverflow