如何只读取大文件中一行的一部分?

How to read only part of a line on a big file?

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

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

C#编码

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

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