如何获得行数而不读取文件结束



是否有一种方法可以在大文本文件中获得行数,但不读取文件内容或读取文件到结束并计数++。

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

那些

No。你必须阅读文件。如果你想在不计数的情况下快速找到它,可以考虑将它存储在文件的开头,或者在写文件时存储在一个单独的文件中。

请注意,您可以流式传输文件,而且速度快得惊人:

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

因为我可能在某些情况下,我应该得到总行数,并将其与当前行进行比较,以显示百分比,只是为了百分比显示,首先读取所有内容,而不是再次读取以显示原始文本,这可能是愚蠢的。

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

不,没有别的办法。

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

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

正如Guffa和Jason所说,除了读到最后,没有其他方法可以得到这些行。

以不同的方式解决问题:

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

那只是一些随机的数字,顺便说一下。

最新更新