文件不是完全读取的

时间:2011-10-04 02:44:56

标签: c# .net file

我有一个大约113687行的文件文本,但我的应用程序只能读取314行,有人可以说为什么?

我的代码:

string file = @"z:\foo.txt";
StreamReader reader = File.OpenText(file);
string line;
int rows = 0; 
while ((line = reader.ReadLine()) != null) {
  ++rows; 
   doSomethingWith(line); 
  // ...
} 

DoSomethingWith功能类似于:

protected static bool DoSomethingWith(string line)
{
    return Regex.Match(line, @"\d+\-\d+\.\d+\.\d+\.\d+").Success; 
}

更新

回答Gregs问题:

  

你的foo.txt在第314行包含一个Ctrl + Z字符吗?

是的,我的文件在第314行包含Control-Z字符。

1 个答案:

答案 0 :(得分:4)

Windows上的文本文件可以使用 Ctrl + Z 字符终止。这意味着当读取文件时,StreamReader会在遇到 Ctrl + Z 时返回文件结尾。未读取 Ctrl + Z 后的任何数据。

如果您希望在没有此文字模式行为的情况下阅读整个文件,请使用File.OpenRead代替File.OpenText