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

时间:2011-09-26 13:55:04

标签: c# algorithm text

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

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

最好成绩

3 个答案:

答案 0 :(得分:21)

没有。你必须阅读该文件。考虑将文件存储在文件的开头,或者在编写文件时将其存储在单独的文件中,如果您想快速找到它而不计算。

请注意,您可以流式传输文件,而且速度非常快:

int count = File.ReadLines(path).Count();
  

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

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

答案 1 :(得分:13)

不,没有别的办法。

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

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

答案 2 :(得分:5)

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

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

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

那里只是一些随机数字,顺便说一句。