【问题标题】:Can the operating system tell me when a new file is created?操作系统可以告诉我何时创建新文件吗?
【发布时间】:2010-10-23 02:25:22
【问题描述】:

我想知道什么时候在特定目录上创建了新文件,而不是时不时地扫描目录。

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

如前所述,这与 How to be notified of file/directory change in C/C++, ideally using POSIX

【问题讨论】:

    标签: windows linux file operating-system


    【解决方案1】:

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

    来自 MSDN:

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

    MSDN Page

    【讨论】:

    • FileSystemWatcher 会递归地监视文件夹吗?
    【解决方案2】:

    对于 Mac OS X,此功能是 Spotlight API 的一部分。

    【讨论】:

      【解决方案3】:

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

      有一个例子here(搜索FileSystemWatcher)

      【讨论】:

        【解决方案4】:

        取决于哪个操作系统。

        在 Windows 上,基本 API 为 Directory Change Notifications

        由于您在标签中提到 Linux,所以这将是 inotify API

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

        【讨论】:

          【解决方案5】:

          在 Linux 下,查看Inotify

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                【解决方案8】:

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

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

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

                【讨论】:

                  猜你喜欢
                  • 2013-04-13
                  • 2014-12-27
                  • 2012-04-27
                  • 1970-01-01
                  • 2018-07-29
                  • 2011-02-21
                  • 1970-01-01
                  • 2020-07-26
                  • 2018-03-31
                  相关资源
                  最近更新 更多