1

我需要读取 - 读取 .NET 4.5 应用程序中日志文件的第一行和最后一行,也就是说。
日志文件的每一行都有时间戳,我想找到最年轻(第一行)和最旧(最后一行)的时间戳。这不是一项艰巨的任务,但我想知道是否有一种聪明的方法。

目前实现看起来像这样(我实际上需要日志文件的第二行,因为第一行是空白的,因此是Skip()):

string firstLine = File.ReadLines(logFile).Skip(1);
string lastLine = File.ReadLines(logFile).Last();

可以对这个非常简单的代码进行任何改进吗?

4

2 回答 2

6

在 an 中阅读一次IEnumerable<string>,然后将其用于第二行和最后一行。

var lines = File.ReadLines(logFile);
string firstLine = lines.Skip(1);
string lastLine = lines.Last();

在您当前的代码中,您正在读取两次,如果您希望在第一次读取和第二次读取之间修改文件,那么您必须读取两次文件。

于 2013-10-29T19:36:48.790 回答
1

那么最明显的解决方案 File.ReadLines 已经找到了。

对于大文件,另一种选择可能是:

来自这里的 ReverseLineReader 类: https ://stackoverflow.com/a/452945/2254877

于 2013-10-29T20:10:16.697 回答