可能重复:
如何快速计算行数?
我有一些文件逐行包含数据。
我想获取文件中的行数以向用户显示进度状态。(我在后台逐行处理这些文件)
我可以通过完全读取文件来做到这一点,但是这些文件太大了,以至于我的应用程序不必要地占用了 RAM 空间。
所以我想在不读取整个文件的情况下获取文件中的行数。
我怎样才能做到这一点?
显然你不能。获得行数的唯一方法是计算文件中的换行符,您需要为它读取文件。
我可以完全用读取文件来做到这一点。但是这些文件太大了。因此,我的应用程序不必要地消耗 RAM。
您可以部分读取文件(以便每个部分都足够小以容纳内存)并从每个小部分累积行数。
var lineCount = File.ReadLines(@"C:\file.txt").Count();
如果不将其读入内存(您不需要一次读取整个文件,您可以逐行读取,例如使用,不会消耗太多内存)。也看看类似的问题ReadLine
long count = 0;
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
count++;
}
}
return count;
另一种可能性,但这仅适用于您还负责开发生成数据文件的应用程序的情况,即让它创建两个文件。一个包含数据,一个只包含数据文件的行数。然后当您准备好处理数据文件时,您的处理应用程序可以从行数文件中读取行数,然后开始处理数据文件。
如果您无权访问数据生成应用程序,请忽略此答案,因为它不适用于您的问题。