代码在循环大文件时过早终止

时间:2019-01-31 17:33:59

标签: c#

我使用以下简单代码遍历大文件的每一行:

using (var reader = new StreamReader(@"C:\SomeBigFile.txt"))
{
    while (reader.ReadLine() != null)
    {
        var line = reader.ReadLine();

        // some more stuff
    }
}

大约7000000行发现一个空行,在该reader之后.ReadLine()返回null。因此代码终止。但是,当我期望文本编辑器中的文件时,此后肯定会有更多行,并且返回行为空的行看不到问题。有没有办法使上述内容真正完成读取文件?谢谢!

1 个答案:

答案 0 :(得分:5)

您暂时跳过了一行。这就是为什么您丢失数据的原因。

尝试一下:

using (var reader = new StreamReader(@"C:\SomeBigFile.txt"))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();


    // some more stuff
    }
}

大多数情况下我正在使用此

var filename = @"C:\SomeBigFile.txt";

foreach(var line in File.ReadLines(filename))
{
    //  ....
}

它返回一个IEnumerable<string>,它逐行读取文件。

相关问题