我正在大学的分布式系统课程中完成一个项目。我打算创建类似于Dropbox(getdropbox.com)的东西,但是它有一些非集中的点对点扭曲。为此,我需要一些检测目录结构中的更改的方法。您如何看待Dropbox这样做?他们的实施工作非常好。我想知道他们是否在Windows上使用win32 api中的FileSystemWatcher,以及类似于Linux和Mac的平台。
答案 0 :(得分:4)
在Mac OS X Leopard下,有FSEvents API,允许您注册文件系统更改的通知:
http://googlemac.blogspot.com/2008/03/file-system-change-logger-for-leopard.html
答案 1 :(得分:3)
在Linux方面,有可怕的无证文件inotify。如果你不介意使用glib,那就是GFileMonitor类,它非常容易使用。我不认为它是可移植的,所以它只是Linux。
答案 2 :(得分:3)
eduffy提到了inotify ....
我在一段时间后看到了这一点,基于inotify。称为incron,它为cron添加了类似cron的功能。
答案 3 :(得分:1)
据我所知,DropBox(等)使用Windows服务(或Linux / Mac端的守护进程)来监视文件系统。在.Net中创建这样的内容非常简单,这种情况通常是Windows服务的教科书示例。我相信在C ++中做类似的事情也是相当直接的。
这是一个关于如何在Windows上创建服务的.Net简单教程的链接。您需要为解决方案做的只是在Timer.Tick()事件中添加监视逻辑。