如何检测Windows中的文件更改?

时间:2010-12-03 23:05:57

标签: windows

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

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

哪种在Windows中最好的方法? 您对此提供哪种语言建议? (我将为它构建一个基本的UI)。

3 个答案:

答案 0 :(得分:4)

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

这些API都会偶尔发生错过事件。我所知道的没有解决方案,没有任何简单的选择。如果您的目录没有经常更改,它可能会对您有用。

答案 1 :(得分:4)

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

答案 2 :(得分:0)

使用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