可能是重复问题:
如何快速计算行数?
我有一些包含逐行数据的文件。
我想要获取文件中的行数以向用户展示进度状态。(我逐行读取这些文件并在后台进行处理)
我可以通过完全读取文件来做到这一点,但这些文件非常大,因此我的应用程序会不必要地消耗RAM空间。
因此,我想要在不完全读取整个文件的情况下获取文件中的行数。
我该怎么做?
可能是重复问题:
如何快速计算行数?
我有一些包含逐行数据的文件。
我想要获取文件中的行数以向用户展示进度状态。(我逐行读取这些文件并在后台进行处理)
我可以通过完全读取文件来做到这一点,但这些文件非常大,因此我的应用程序会不必要地消耗RAM空间。
因此,我想要在不完全读取整个文件的情况下获取文件中的行数。
我该怎么做?
您可以部分读取文件(以便每个部分足够小,以适合内存),并从每个小部分累积行数。我可以完全读取文件来做到这一点。但是这些文件非常大。因此,我的应用程序会不必要地消耗内存。
var lineCount = File.ReadLines(@"C:\file.txt").Count();
ReadLines
返回IEnumerable<string>
。 - L.B@zerkms
的观点。 - Kaf另一种可能性,但这仅适用于您还负责生成数据文件的应用程序开发的情况,是让它创建两个文件。一个包含数据,另一个仅包含数据文件的行数。然后,当您准备处理数据文件时,您的处理应用程序可以从行计数文件中读取行计数,然后开始处理数据文件。
如果您无法访问数据生成应用程序,请忽略此答案,因为它不适用于您的问题。
无法精确计算文本文件的行数(但可以根据前n行猜测),而不需要将其读入内存中(您不需要一次性读取整个文件,可以逐行读取,例如使用ReadLine
,这不会消耗太多RAM)。还可以查看类似问题。
long count = 0;
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
count++;
}
}
return count;