是否有索引/监控文件驱动器的最佳实践或技巧?

时间:2009-03-30 18:56:06

标签: indexing desktop-application drive

我需要找到并监控硬盘上的所有照片或照片管理器的文件夹。目前我正在天真地这样做:递归遍历,手动将文件夹标记为索引,并重复该过程以捕获添加或移动照片的时间。

问题在于文件夹树足够大这是非常昂贵的,所以我正在寻找不同的提示和/或保持低CPU程序的提示。

理想情况下,解决方案不依赖于平台。

编辑:我目前正在使用xulrunner,但是可以编译模块做平台特定的事情 第一次跑步怎么样?除了手动遍历整个文件夹树之外,是否没有解决方案(甚至取决于平台)。

6 个答案:

答案 0 :(得分:5)

  

理想情况下,解决方案不依赖于平台。

不可能。 Win32API具有FindFirstChangeNotification,Linux具有inotify(和其他),Mac OS X具有FSEvents等等。这是非常低级的东西,没有操作系统和其他操作系统一样。如果你想要一些跨平台的东西,你必须找到一个带有几个后端的API,这些后端可以在你想要的平台上运行,但是如果有这些,我还没有找到它们。

答案 1 :(得分:0)

我不知道如何以独立于平台的方式执行此操作,但在Linux上我会挂钩inotify以在添加或更新文件时调用某些内容。当发生这种情况时,您甚至可以使用inotify-tools来运行脚本,因此如果它们很少发生,您不必一直运行捕获所有这些事件。只需让脚本更新数据库,并选择通知您的图库/显示程序它是否正在运行。

答案 2 :(得分:0)

你在.NET上编码吗?如果是这样,您可以使用FileSystemWatcher类。

答案 3 :(得分:0)

为什么不使用filewatcher程序,它会通知您特定文件夹树的更改?

如果你想自己编写,你可以使用FileSystemWatcher类来完成它。

答案 4 :(得分:0)

截至2014年的一个答案是facebook的守望者:https://facebook.github.io/watchman/

答案 5 :(得分:0)

几年前我将Windows API的一些功能移植到Linux上(如FindFirstChangeNotification,FindCloseChangeNotification ......)它有一些限制但是对于你需要的东西就足够了,请看看:{{3} }

相关问题