操作系统可以告诉我何时创建新文件?
-
03-07-2019 - |
题
我想知道何时在特定目录上创建新文件,而不是不时扫描目录。
我知道有一种方法可以让操作系统告诉我的程序创建了一个新文件。它是如何工作的?
如上所述,这与...有相似之处 如何通知文件/目录在C / C ++中的变化,理想情况下使用POSIX
解决方案
取决于哪个操作系统。
在Windows上,基本API将是目录更改通知的。
由于您在标签中提到了Linux,因此这将是 inotify API 。
要添加到OS X答案,从10.5开始,您需要 FSEvents API 。
其他提示
在Linux下,请查看 Inotify 。
如何成为通知C / C ++中的文件/目录更改,理想情况下使用POSIX
或者在stackoverflow中搜索inotify,你会得到很多想法
FAM 为所有UNIX提供了一致的文件监视界面。在Linux上,后端守护程序可能会被 Gamin 取代,但程序已关联和FAM一起工作就好了。 (在幕后,FAM可能正在使用轮询,而Gamin可能正在使用inotify或dnotify或kqueue,但您不必担心实现。)
OS X.5有 FSEvents ,这是非常不同的,它监视整个系统而不是指定的文件和目录,但也满足您的需求。
在Windows上,请参阅查找(首页|下一页|关闭)ChangeNotification或ReadDirectoryChanges 。
FileSystemWatcher就是答案 - 它以递归方式工作。
有一个例子这里(搜索FileSystemWatcher)
使用Mac OS X,此功能是Spotlight API的一部分。
在Windows上使用.Net(不确定Linux / mono),您可以使用FileSsytemWatcher监视新文件并在创建事件时引发事件。
来自MSDN:
使用FileSystemWatcher进行监听 指定目录中的更改。您 可以监视文件和文件的变化 指定的子目录 目录。您可以创建一个组件 在本地计算机上观看文件, 网络驱动器或远程计算机。
Windows API提供了监视文件系统的工具 - 这里有一个示例 http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx