【问题标题】:How can I detect changes to files from Windows?如何检测来自 Windows 的文件更改?
【发布时间】:2018-06-27 23:07:49
【问题描述】:

我想跟踪目录中文件的更改,并在更改时通知 Web 服务。

在 Mac 上,我知道我可以对 file system events 做出反应,比如创建、修改它等等。

在 Windows 中执行此操作的最佳方法是什么? 您建议使用哪种语言? (我将为它构建一个基本的 UI)。

【问题讨论】:

    标签: windows


    【解决方案1】:

    本机 (C++/C) API 是 ReadDirectoryChangesW。在 .Net(C# 等)中,这被封装在 FileSystemWatcher 类中。 C# 更容易编程,该 URL 上有一些示例代码。

    这些 API 都会偶尔发生错过事件。我知道没有解决方案,也没有任何简单的替代方案。如果您的目录不经常更改,那么它可能对您来说很好。

    【讨论】:

      【解决方案2】:

      C# 有一个类System.IO.FileSystemWatcher,它可能会做你想做的事。更多详情on the MDSN。对于 C++,请参阅this StackOverflow question

      【讨论】:

      • 感谢您的回答,克里斯,以及对其他问题的参考。
      【解决方案3】:

      使用 Java,我们可以使用 WatchService 来检测特定文件甚至目录中发生的事件类型。

      实现很简单,您只需从 FileSystem 获取 WatchService,如下所示:

      1- 获取 WatchService: WatchService watchService = FileSystems.getDefault().newWatchService();

      2- 在您的文件中使用 WatchService:

      FILE_LOCATION.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds. ENTRY_CREATE

      毕竟,您可以像上面一样看到您的文件中发生的所有类型的事件:StandardWatchEventKinds.ENTRY_MODIFY,这意味着您的文件已被修改。

      更多详情请查看以下链接:

      https://github.com/PascoalBayonne/Exercise/blob/master/src/nio/directory/watching/DirectoryWatching.java

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        相关资源
        最近更新 更多