0

可能重复:
C# 逐行读取文件
如何从 TextReader 循环遍历行?

我得到了一个 .NET TextReader(一个可以读取一系列连续字符的类)。如何逐行循环其内容?

4

4 回答 4

3

你的意思是这样的吗?

string line = null;
while((line = reader.ReadLine()) != null) 
{
    // do something with line
}
于 2012-10-02T10:03:00.840 回答
2

您可以非常轻松地创建扩展方法,以便您可以使用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())

编辑:如评论中所述,这是懒惰的。它一次只会读取一行,而不是将所有行读入内存。

于 2012-10-02T10:04:03.830 回答
0

你会这样使用它:

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());
        }
    }
}
于 2012-10-02T10:03:33.447 回答
0

我目前拥有的非懒惰解决方案:

foreach(string line in source.ReadToEnd().Split(Environment.NewLine.ToArray(),StringSplitOptions.None))
于 2012-10-02T10:05:04.913 回答