操作系统可以告诉我何时创建新文件?

时间:2009-05-01 11:28:56

标签: windows linux file operating-system

我想知道何时在特定目录上创建新文件,而不是不时扫描目录。

我知道有一种方法可以让操作系统告诉我的程序创建了一个新文件。它是如何工作的?

如上所述,这与...有相似之处 How to be notified of file/directory change in C/C++, ideally using POSIX

8 个答案:

答案 0 :(得分:16)

取决于哪个操作系统。

在Windows上,基本API为Directory Change Notifications

由于您在标记中提到了Linux,因此这将是inotify API

要添加到OS X答案,从10.5开始,您需要FSEvents API

答案 1 :(得分:7)

在Linux下,请查看Inotify

答案 2 :(得分:4)

How to be notified of file/directory change in C/C++, ideally using POSIX

或者在stackoverflow中搜索inotify,你会得到很多想法

答案 3 :(得分:3)

FAM为所有UNIX提供了一致的文件监视界面。在Linux上,后端守护程序可以由Gamin替换,但与FAM链接的程序可以与Gamin一起使用。 (在幕后,FAM可能正在使用轮询,而Gamin可能正在使用inotify或dnotify或kqueue,但您不必担心实现。)

OS X.5有FSEvents,它的不同之处在于它监视整个系统而不是指定的文件和目录,但也可以满足您的需求。

在Windows上,请参阅Find(First|Next|Close)ChangeNotification or ReadDirectoryChanges

答案 4 :(得分:2)

FileSystemWatcher就是答案 - 它以递归方式工作。

有一个例子here(搜索FileSystemWatcher)

答案 5 :(得分:1)

在Windows上使用.Net(不确定Linux / mono),您可以使用FileSsytemWatcher监视新文件并在创建事件时引发事件。

来自MSDN:

  

使用FileSystemWatcher进行监听   指定目录中的更改。您   可以监视文件和文件的变化   指定的子目录   目录。您可以创建一个组件   在本地计算机上观看文件,   网络驱动器或远程计算机。

MSDN Page

答案 6 :(得分:1)

使用Mac OS X,此功能是Spotlight API的一部分。

答案 7 :(得分:1)

Windows API提供了监视文件系统的工具 - 这里有一个示例http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx