如何获取没有读取文件的行数

Bur*_*imi 15 c# algorithm text

有没有办法获得大文本文件中的行数,但没有读取文件内容或读取文件结束和计数++.

也许有一些文件属性,但根本找不到它.因为我可能在某些情况下我应该获得总行数并将其与当前行进行比较以显示百分比,并且仅针对百分比显示首先阅读所有内容而不是读取它再次显示原始文本可能是愚蠢的在用户.

最好成绩

jas*_*son 21

不,您必须阅读该文件.如果要快速查找文件而不计算,请考虑将其存储在文件的开头或单独的文件中.

请注意,您可以流式传输文件,但速度惊人:

int count = File.ReadLines(path).Count();
Run Code Online (Sandbox Code Playgroud)

因为我可能在某些情况下我应该获得总行数并将其与当前行进行比较以显示百分比,并且仅针对百分比显示首先阅读所有内容而不是读取它再次显示原始文本可能是愚蠢的在用户.

哦,只需获取文件大小和每行的长度(以字节为单位),并保持到目前为止处理的字节数的累积计数.

  • 我认为这将导致内存故障,因为我处理从另一个应用程序生成的File的<> 8Gb日志文件 (2认同)
  • @UrbanEsc:不,它仍然流式传输文件.这是一个基本上看起来像`int count = 0; using(var e = source.GetEnumerator()){while(e.MoveNext()){count ++; 返回计数;`和`var = source.GetEnumerator()`和`e.MoveNext()`基本上将文件作为`StreamReader`打开,然后重复执行`StreamReader.ReadLine`.没有缓冲文件. (2认同)

Guf*_*ffa 13

不,没有其他办法.

文件不是基于行的(甚至是基于字符的),因此没有关于行数(甚至字符数)的元信息.有关内容的唯一元数据是以字节为单位的长度.

如果您有关于该文件的一些其他信息,例如每行的长度完全相同,并且它使用8位编码以便字符数与字节数相同,则可以计算文件大小的行.


Urb*_*Esc 5

正如Guffa和Jason所说,除了阅读之外,没有其他方法可以获得.

以不同方式解决您的问题:

如果您只对百分比显示感兴趣,可以尝试从总文件大小和您当前所在的行中累计该值.你需要在那里应用一些巫术技巧来获取读取的实际字节(比如说,你已经读到第10行,总共200个字节或其他),文件大小是400字节.你可能猜到你是50%,而不需要知道总行数.

那只是一些随机数,顺便说一句.