我需要阅读 - 在.NET 4.5应用程序 中读取日志文件的第一行和最后一行,即。
日志文件在每一行都有时间戳,我想查找最年轻的(第一行)和最早的(最后一行)时间戳。这不是一项艰巨的任务,但我想知道是否有一个聪明的方法来做到这一点。读取文件中的第一行和最后一行
目前实施看起来是这样的(其实我需要的日志文件的第二行,因为第一行是空白,因此Skip()
):
string firstLine = File.ReadLines(logFile).Skip(1);
string lastLine = File.ReadLines(logFile).Last();
哪有这个非常简单的代码的任何改进?
定义 “改进”。 Habib的答案对于小文件非常有用。尽管如此,对于非常大的文件来说,它会比较慢。但加速其中有些涉及。您最终以二进制读取文件的结尾,并向后回溯到最后一行的开头。如果您真的感兴趣,请参阅http://stackoverflow.com/a/452945/56778。 –
跳过(1)表示它在第一个元素之后返回其余元素。我猜你认为First()? – Measuring
@JimMischel执行时间的改进,内存紧随其后。由于对于最常见的情况来说,优化总是最好的,所以我可以说大多数文件的大小约为5MB或更少,在极端情况下大约为25MB(大约200k行)。我也可以有20-30个这样的文件进行解析。我往后看了一眼,并同意这看起来'很棘手',如果可能的话,会避免这种情况。目前的解决方案不是“缓慢”。 – valsidalv