如何在不读取的情况下获取文件中的行数

Uğu*_*maz 4 c#

可能重复:
如何快速计算线?

我有一些文件包含逐行数据.

我想获取文件中的行数以向用户显示进度状态.(我在后台逐行读取这些文件)

我可以通过完全读取文件来完成此操作,但这些文件非常大,以至于我的应用程序不必要地消耗了RAM空间.

所以我想在不读取整个文件的情况下获取文件中的行数.

我怎样才能做到这一点?

Hig*_*ark 7

  1. 读取文件的大小(以字节为单位) - o/s会告诉你这个.
  2. 读取前1000行(并处理它们).
  3. 计算平均线大小.
  4. 将此平均大小除以文件大小.
  5. 现在你估计了文件中的行数,对于进度条显示有点准确.
  6. 如果这不够准确,请在读取文件时不时重新计算.


zer*_*kms 6

显然你不能.获取行数的唯一方法是计算文件中的新行字符,然后需要为其读取文件.

我可以完全使用读取文件来完成此操作.但是这些文件太大了.因此,我的应用程序不必要地消耗RAM.

您可以部分读取文件(以便每个部分都足够小以适应内存)并累积每个小部分的行数.


Vla*_*adL 5

var lineCount = File.ReadLines(@"C:\file.txt").Count();
Run Code Online (Sandbox Code Playgroud)

  • @zerkms虽然这个答案**读取**整个文件,但它不会将所有内容加载到内存中。`ReadLines` 返回 `IEnumerable<string>` (3认同)