使用 FileSystemWatcher 从文件中获取新行

2024-04-24

我正在观看一个包含以下代码的文件:

        [..]
        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!");
        }
        [..]

这有效。现在,假设文件 t.log 的内容是:

row 1
row 2
row 3
row 4

当我向文件添加(并保存)几行时,文件变成这样:

row 1
row 2
row 3
row 4
row 5
row 6

如何检索添加的行是“第 5 行”和“第 6 行”?

请注意,该文件可能非常大,因此不能将其内容保留在内存中并与新版本进行比较。同样,存储最后读取行的值并从该行开始计数也是不可能的,因为这会迫使我每次都读取整个文件,而且可能存在具有相同值的行。

任何帮助真的很感激。


如果它是始终附加的日志,您可以保留文件大小和更改:

using (FileStream fs = new FileStream("t.log", FileAccess.Read))
{
  fs.Seek(previousSize, SeekOrigin.Begin);
  //read, display, ...
  previousSize = fs.Length;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 FileSystemWatcher 从文件中获取新行 的相关文章

随机推荐