首页 > 解决方案 > 如何只读取大文件中一行的一部分?

问题描述

我有一个 30GB 的日志文件要读取和处理,在第一部分中,我需要找到一个日期范围(我从最终用户那里获得),然后将它们全部打印出来。

因此,对于第一部分,是否可以只读取每行的日期(前 20 个字符)而不是移动到下一行的开头,而不是读取整行?

C# 编码

标签: c#filepointersstream

解决方案


文本文件并不特殊,它们没有索引之类的东西来加快速度。您将需要阅读所有 30GB。如今,TBH 30GB 并不多。我曾在每天生成这么多日志的系统上工作过。有 $$$ 工具可以提供帮助,如果您经常需要查看这么多文本,它们会预先索引数据,但如果这是一次性的,那么类似:

while(!stream.EndOfStream)
{
     var line = stream.ReadLine();
     var dateTime = DateTime.Parse(line.SubString(20));
     if(dateTime >= start && <=end)
     { do something }
}

推荐阅读