2012-04-07 84 views
3

我正在尝试读取大型文本文件(4000多行)并将每行输出到控制台。我使用下面的代码在阅读文本文件时,它只读取其中的一部分

 using (var reader = new StreamReader("list1.txt")) 
     { 
      while (!reader.EndOfStream) 
       Console.WriteLine(reader.ReadLine().Trim()); 
     } 

     Console.Read(); 

该读取线,但问题是阅读从线4113启动时,应该从一个正确的线路首发?这意味着我只能从文本文件中获得100行左右的内容。为什么会发生这种情况?

谢谢。

+6

这看起来像它应该工作。你确定它不是滚动浏览控制台窗口的滚动缓冲区吗? – Robaticus 2012-04-07 00:51:14

+0

我该如何检查? – 2012-04-07 00:53:58

+0

啊是的,我改变了缓冲区高度以适应文本的行数。现在感谢:) – 2012-04-07 00:55:47

回答

2

您可能会发现输出窗口只显示最后的N行,其中N大约为100.换句话说,回滚缓冲区比您想像的要小。

您可以通过更改您的代码以类似检查:

int numlines = 0; 
using (var reader = new StreamReader("list1.txt")) { 
    while (!reader.EndOfStream) { 
     Console.WriteLine(reader.ReadLine().Trim()); 
     numlines++; 
    } 
} 
Console.WriteLine("Wrote " + numlines + " lines."); 
Console.Read(); 

这将在输出端部处理的行数。

您可以变化控制台高度用以下命令:

Console.BufferHeight = 30000; 
2

正如用户所建议的,我需要增加Bufferheight以使文本行成为行。