可能重复:
How to count lines fast?
我有一些文件包含逐行数据。
我想获取文件中的行数以向用户显示进度状态。 (我逐行处理后台阅读这些文件)
我可以通过完全读取文件来完成此操作,但这些文件非常大 我的应用程序不必要地消耗RAM空间。
所以我想在不读取整个文件的情况下获取文件中的行数。
我该怎么做?
答案 0 :(得分:7)
答案 1 :(得分:6)
我可以完全使用读取文件来完成此操作。但是这些文件太大了。因此,我的应用程序不必要地消耗RAM。
您可以部分读取文件(这样每个部分都足够小以适应内存)并累积每个小部分的行数。
答案 2 :(得分:2)
var lineCount = File.ReadLines(@"C:\file.txt").Count();
答案 3 :(得分:0)
无法计算文本文件行(完全,但你可以根据第一个 n 行进行猜测)没有读取它进入内存(你不需要一次读取整个文件,你可以逐行读取,例如使用ReadLine
,不会消耗太多的RAM)。另请查看similar question
long count = 0;
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
count++;
}
}
return count;
答案 4 :(得分:0)
另一种可能性,但这仅适用于您还负责开发生成数据文件的应用程序,就是让它创建两个文件。一个包含数据,一个只包含数据文件的行数。然后,当您准备好处理数据文件时,您的处理应用程序可以从行计数文件中读取行数,然后开始处理数据文件。
如果您无法访问数据生成应用程序,请忽略此答案,因为它不适用于您的问题。