C#监控文件活动

时间:2019-01-13 17:05:33

标签: c# .net .net-3.5 filesystemwatcher file-monitoring

我需要监视文件的更改,并准确查看文件的修改位置。

似乎我无法使用FileSystemWatcher,因为我仅收到文件已被修改的通知,但我不知道确切更改了什么,并且在事件发生后存储文件副本以进行差异比较可行,因为文件很大。

我想实现类似于SysInternals在其Process Monitor软件中的功能,该功能告诉我们,对于WriteFile事件,给定文件的修改部分的偏移量和长度。

我读到有一个Windows API可以执行此操作,但是我找不到关于如何在.net 3.5应用程序上实现它的任何方式。

2 个答案:

答案 0 :(得分:1)

根据我的调查,.NET平台提供了此event来处理文件更改事件。但是,仅此一项并不能让您知道文件的哪一部分已更改。

您将需要将文件副本存储在某个地方,以便在文件更改时将其与之进行比较,然后在完成比较后更新该副本。这是一个非常基本的解决方案,如果文件太大,可能会导致效率低下。

答案 1 :(得分:0)

使用FileSystemWatcher,您可以订阅已更改的事件ChangedEvent

FileSystemEventArgs包含属性FullPath,可以将其传递给FileInfo。这将为您提供一些基本的文件信息,例如,可以将其存储到数据库中。您可以通过这种方式保留文件更改的历史记录。

如果您需要比较文件的内容,则更具挑战性,并且根据文件类型的不同,方法也会有所不同。