Как перебрать каждую строку из TextReader?
Возможный дубликат:
C# Чтение файла построчно
Как зациклить строки из TextReader?
Мне дали.NET TextReader (класс, который может читать последовательные серии символов). Как я могу перебрать его содержимое построчно?
4 ответа
Решение
Вы имеете в виду что-то подобное?
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());
}
}
}