猿问

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

我正在循环访问一个大文件的每一行,起诉这个直接的代码:


using (var reader = new StreamReader(@"C:\SomeBigFile.txt"))

{

    while (reader.ReadLine() != null)

    {

        var line = reader.ReadLine();


        // some more stuff

    }

}

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


天涯尽头无女友
浏览 97回答 1
1回答

湖上湖

您正在跳过一行。这就是您丢失数据的原因。试试这个:using (var reader = new StreamReader(@"C:\SomeBigFile.txt")){&nbsp; &nbsp; while (!reader.EndOfStream)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; var line = reader.ReadLine();&nbsp; &nbsp; // some more stuff&nbsp; &nbsp; }}主要是我用这个:var filename = @"C:\SomeBigFile.txt";foreach(var line in File.ReadLines(filename)){&nbsp; &nbsp; //&nbsp; ....}它返回一个逐行读取文件的内容。IEnumerable<string>
随时随地看视频慕课网APP
我要回答