5

VBA问题

有一个很大的日志文件(大约 500,000 行),我需要以相反的顺序逐行读取它,即从最后一行到第一行。我知道我可以在 Microsoft Scripting Runtime 参考中使用 FileSystemObject,但是对于 TextStream 中的 ReadLine 方法没有像reverse这样的选项

现在,我能想到的唯一方法就是这样,有一个计数器并为我阅读的每一行跳过前几行,但这绝对不够好。任何建议代码/算法将不胜感激。

4

2 回答 2

3

如果您的日志是一种具有允许确定顺序的字段的数据库(是否有日期字段或行号字段),那么您可以尝试使用带有 SQL 查询的 ADO 解决方案以相反的顺序读取日志(ORDER BY ... DESC)。因此,您将能够从最后阅读到第一个。或者通常-尝试使用 ADO。

于 2013-04-02T06:27:05.780 回答
1

文件不是基于行的,甚至不是基于字符的,它只是字节,因此无法在文件中以相反的顺序读取行。文本如何分隔成行仅取决于文本中换行符的位置。

您可以从头开始读取行并将它们存储在旋转缓冲区中,例如,当您到达文件末尾时,缓冲区中的最后 1000 行。这样,您就可以从缓冲区访问一定数量的行,而不必为每一行读取整个文件。

之后您知道文件中有多少行,因此当您需要重新填充缓冲区时,您可以跳过一定数量的行并将以下行读入缓冲区。

于 2013-04-02T05:55:12.957 回答