Как перебрать каждую строку из TextReader?[дубликат]

StackOverflow https://stackoverflow.com//questions/12688245

  •  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());
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top