在Linux操作系统中,有一个名为inotify的子系统,它可以通知应用程序文件系统的变化。
然而,我主要使用Windows系统,所以我想知道是否有类似的方法来监视文件系统的变化?
在Linux操作系统中,有一个名为inotify的子系统,它可以通知应用程序文件系统的变化。
然而,我主要使用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。
它们都有微妙的差别,并且在边缘情况下它们的可靠性都具有疑问。一般来说,你不能完全依赖这些api始终100%地查看所有的变化。大多数使用文件系统监控的人会与定期扫描结合使用,以补偿由于推送api丢失或不完整而导致的信息缺失。
FileSystemWatcher
|FindFirstChangeNotification
的错误行为?这是PhillipBrandonHolmes在此处所提到的吗? - n611x007FileSystemWatcher()不太可靠,主要是因为其用于监视缓冲区的错误处理更或者更不完整。由于缺乏路径和详细的错误处理信息,Microsoft没有提供任何恢复或手动轮询工作目录的方法。
JNotify for Windows也不太可靠,因为这个bug源于win32。JNotify使用win32。因此,它与FileSystemWatcher()没有什么不同。
我做了一些搜索,我似乎记得在Windows上看到过类似的东西。对于.NET,有FileSystemWatcher。它主要适用于NT或XP及以上版本。