在 Linux 操作系统中,有一个 ionotify 子系统,它通知应用程序文件系统的更改。
但是,我主要是 Windows 用户,所以我想知道是否有类似的方法来监视文件系统更改?
如果您使用的是.net,请使用FileSystemWatcher
. 更多信息在这里:http: //msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
如果您使用的是C,请使用FindFirstChangeNotification
, FindNextChangeNotification
, ReadDirectoryChangesW
。更多信息在这里:http: //msdn.microsoft.com/en-us/library/aa365261 (VS.85).aspx
在OSX上,相关的 api 是fsevents
api。
它们彼此之间都有微妙的不同,并且在极端情况下它们的可靠性都值得怀疑。通常,您不能 100% 地依赖这些 api 来获得所有更改的完整视图。大多数使用文件系统监控的人将其与定期扫描相结合,以弥补推送 API 中丢失或不完整的信息。
请参阅FindFirstChangeNotification API 或 .NET 对应的FileSystemWatcher
FileSystemWatcher() 不可靠主要是因为它对观察者缓冲区的错误处理或多或少是不完整的。由于缺少路径和详细的错误处理信息,Microsoft 无法让您恢复或手动轮询工作目录。
Windows 的 JNotify 也不可靠,因为此错误 ^ 源自 win32。JNotify 使用 win32。因此,它与 FileSystemWatcher() 没有什么不同。
我做了一些搜索,我似乎记得在 Windows 上看到过类似的东西。.NET有 FileSystemWatcher。它主要用于 NT 或 XP 和转发。