在环顾四周的时候,我发现了很多关于如何计算出文件中行数的讨论.
例如这三个:
c#我 如何计算
文本文件中的行数确定文本文件中的行数
如何快速计算行数?
那么,我继续前进并最终使用了我能找到的最有效(至少是内存方式?)方法:
private static int countFileLines(string filePath)
{
using (StreamReader r = new StreamReader(filePath))
{
int i = 0;
while (r.ReadLine() != null)
{
i++;
}
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当文件中的行本身非常长时,这将永远存在.真的没有更快的解决方案吗?
我一直试图使用StreamReader.Read()或者StreamReader.Peek()我不能(或者不知道如何)让它们中的任何一个一旦有'东西'(字符?文本?)就移动到下一行.
有什么想法吗?
结论/结果(根据提供的答案进行一些测试后):
我在两个不同的文件中测试了下面的5种方法,我得到了一致的结果,似乎表明普通的旧StreamReader.ReadLine()方法仍然是最快的方法之一......说实话,我对答案中的所有评论和讨论感到困惑.
文件#1:
大小:3,631 KB
行:56,870
文件#1的结果以秒为单位:
0.02 - > ReadLine方法.
0.04 - >读取方法.
0.29 - > ReadByte方法.
0.25 - > Readlines.Count方法.
0.04 - > ReadWithBufferSize方法.
文件#2:
大小
:14,499 KB 行:213,424
文件#1的结果以秒为单位:
0.08 - > …