pis*_*hio 4 c# filesystems logging
我正在使用以下代码观看文件:
[..]
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\";
watcher.Filter = "t.log";
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.EnableRaisingEvents = true;
private static void watcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine("Changed!");
}
[..]
Run Code Online (Sandbox Code Playgroud)
这有效.现在,假设文件t.log的内容是:
row 1
row 2
row 3
row 4
Run Code Online (Sandbox Code Playgroud)
当我添加到文件(并保存)几行时,文件变为:
row 1
row 2
row 3
row 4
row 5
row 6
Run Code Online (Sandbox Code Playgroud)
如何检索添加的行是"第5行"和"第6行"?
请注意,文件可能非常大,因此将其内容放在内存中并使用新版本进行差异不是一种选择.类似地,存储最后读取行的值和从中开始的计数也是不可能的,因为它会强制我每次都读取整个文件,并且可能存在具有相同值的行.
任何帮助真的很感激.
如果它是一个日志,总是附加,你可以保持文件大小和更改:
using (FileStream fs = new FileStream("t.log", FileAccess.Read))
{
fs.Seek(previousSize, SeekOrigin.Begin);
//read, display, ...
previousSize = fs.Length;
}
Run Code Online (Sandbox Code Playgroud)