在FileSystemWatcher检测到更改后读取文本文件的最后更改

本文关键字:取文本 文件 最后 读取 FileSystemWatcher 检测 | 更新日期: 2023-09-27 18:18:10

关于我之前的帖子:实时监控日志文件的最聪明的方法?
我想要一个FileSystemWatcher来检测文本文件(日志文件)的变化,然后我想要它向我显示最新的变化!

它们是>50bm的大文件,几乎每秒扫描一次非常耗时。
我认为.last()可以帮助,但这段代码只返回最后一行:

 File.ReadText(@"C:'Filename.txt").Last();

我需要一些代码,可以继续从最后一个点读取,只是确定并返回更改。

在FileSystemWatcher检测到更改后读取文本文件的最后更改

如果您只在文件末尾添加数据,则可以在内存中保存最后读取字节的位置,并在每次通知文件已更新时从该位置读取到文件末尾。

FileSystemWatcher不会完全满足您的要求。它可以看到目录级别的更改。一旦文件更改,它就没有以前内容的历史记录。在File.ReadText()上调用Last()也没有文件先前状态的概念,这就是为什么它只返回最后一行。

我认为最好的方法是保存EOF的位置,然后每次FSW引发文件更改事件时,您将从以前的EOF位置读取到新的EOF,然后更新存储EOF位置的变量。