我需要找到并监控硬盘上的所有照片或照片管理器的文件夹。目前我正在天真地这样做:递归遍历,手动将文件夹标记为索引,并重复该过程以捕获添加或移动照片的时间。
问题在于文件夹树足够大这是非常昂贵的,所以我正在寻找不同的提示和/或保持低CPU程序的提示。
理想情况下,解决方案不依赖于平台。
编辑:我目前正在使用xulrunner,但是可以编译模块做平台特定的事情 第一次跑步怎么样?除了手动遍历整个文件夹树之外,是否没有解决方案(甚至取决于平台)。答案 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} }