我需要监视文件的更改,并准确查看文件的修改位置。
似乎我无法使用FileSystemWatcher,因为我仅收到文件已被修改的通知,但我不知道确切更改了什么,并且在事件发生后存储文件副本以进行差异比较可行,因为文件很大。
我想实现类似于SysInternals在其Process Monitor软件中的功能,该功能告诉我们,对于WriteFile事件,给定文件的修改部分的偏移量和长度。
我读到有一个Windows API可以执行此操作,但是我找不到关于如何在.net 3.5应用程序上实现它的任何方式。
答案 0 :(得分:1)
根据我的调查,.NET平台提供了此event来处理文件更改事件。但是,仅此一项并不能让您知道文件的哪一部分已更改。
您将需要将文件副本存储在某个地方,以便在文件更改时将其与之进行比较,然后在完成比较后更新该副本。这是一个非常基本的解决方案,如果文件太大,可能会导致效率低下。
答案 1 :(得分:0)
使用FileSystemWatcher,您可以订阅已更改的事件ChangedEvent
FileSystemEventArgs包含属性FullPath,可以将其传递给FileInfo。这将为您提供一些基本的文件信息,例如,可以将其存储到数据库中。您可以通过这种方式保留文件更改的历史记录。
如果您需要比较文件的内容,则更具挑战性,并且根据文件类型的不同,方法也会有所不同。