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

C# 代码在大文件上循环时过早终止,c#,C#,我在一个大文件的每一行上循环,起诉这个直截了当的代码: using (var reader = new StreamReader(@"C:\SomeBigFile.txt")) { while (reader.ReadLine() != null) { var line = reader.ReadLine(); // some more stuff } } 在第7000000行左右找到一个空行,在该reader.ReadLine()之后

我在一个大文件的每一行上循环,起诉这个直截了当的代码:

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

        // some more stuff
    }
}

在第7000000行左右找到一个空行,在该reader.ReadLine()之后返回null。因此代码终止。但是,当我希望文件在文本编辑器中时,之后肯定会有更多的行,并且我看不到返回空行的行存在问题。有没有办法让上述人员真正完成文件的读取?谢谢

您正在跳过一行。这就是您丢失数据的原因

试试这个:

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
,逐行读取文件。

您正在跳过一行。这就是您丢失数据的原因

试试这个:

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
,逐行读取文件。

reader.ReadLine()
读取一行。另一个
reader.ReadLine()
读取另一行。
reader.ReadLine()
读取一行。另一个
reader.ReadLine()
读取另一行。