【发布时间】:2018-06-27 23:07:49
【问题描述】:
我想跟踪目录中文件的更改,并在更改时通知 Web 服务。
在 Mac 上,我知道我可以对 file system events 做出反应,比如创建、修改它等等。
在 Windows 中执行此操作的最佳方法是什么? 您建议使用哪种语言? (我将为它构建一个基本的 UI)。
【问题讨论】:
标签: windows
我想跟踪目录中文件的更改,并在更改时通知 Web 服务。
在 Mac 上,我知道我可以对 file system events 做出反应,比如创建、修改它等等。
在 Windows 中执行此操作的最佳方法是什么? 您建议使用哪种语言? (我将为它构建一个基本的 UI)。
【问题讨论】:
标签: windows
本机 (C++/C) API 是 ReadDirectoryChangesW。在 .Net(C# 等)中,这被封装在 FileSystemWatcher 类中。 C# 更容易编程,该 URL 上有一些示例代码。
这些 API 都会偶尔发生错过事件。我知道没有解决方案,也没有任何简单的替代方案。如果您的目录不经常更改,那么它可能对您来说很好。
【讨论】:
C# 有一个类System.IO.FileSystemWatcher,它可能会做你想做的事。更多详情on the MDSN。对于 C++,请参阅this StackOverflow question。
【讨论】:
使用 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,这意味着您的文件已被修改。
更多详情请查看以下链接:
【讨论】: