我有一个大约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
字符。
答案 0 :(得分:4)
Windows上的文本文件可以使用 Ctrl + Z 字符终止。这意味着当读取文件时,StreamReader
会在遇到 Ctrl + Z 时返回文件结尾。未读取 Ctrl + Z 后的任何数据。
如果您希望在没有此文字模式行为的情况下阅读整个文件,请使用File.OpenRead
代替File.OpenText
。