我目前正在尝试实现监控文件系统上文件夹的c ++程序。在初始化应用程序时,它会扫描目录并保存一些有关它的元信息。
当程序处于活动状态时,当某些东西被处理时,我可以读取文件夹的更改(例如,更改文件夹或文件的名称)。但是,当程序没有运行时,我无法跟踪目录的更改。在启动时我会得到
Removed folder X
Added folder Y
而不是
Renamed folder X to Y
是否可以用其他方式识别目录而不是它的路径/名称? 如果是,我将如何在C ++ / Qt中收集该信息?
答案 0 :(得分:1)
您可以使用Qt文档声明的QFileSystemWatcher类,而不是重新发明轮子: -
QFileSystemWatcher类提供监视接口 文件和目录进行修改
如果您希望程序一直运行,那么您可能需要查看创建服务(在Windows中)或守护程序(Linux / OSX)。
答案 1 :(得分:0)
这是特定于文件系统的,但通常是的,这是可能的。我认为FAT是主要的例外。但是你不会在C ++标准库或Qt中找到相应的代码。这太不寻常了,所以如果不是文件系统特定的话,你需要特定于操作系统的代码。
答案 2 :(得分:0)
ls -id /path/to/your/folder
有一个访问inode的API。你可以谷歌inode struct linux。
在Windows园林中,您可以在结构BY_HANDLE_FILE_INFORMATION中访问句柄时获取文件ID:
<强> nFileIndexHigh 强> 与文件关联的唯一标识符的高阶部分。 有关更多信息,请参阅nFileIndexLow。 的 nFileIndexLow 强> 与文件关联的唯一标识符的低位部分。