我想检测是否已经看过某个文件,并希望用某些唯一的标识符来识别它。在Linux下,inode号和设备ID(参见
为了简单起见,
我找到的最接近的东西是
问题是我想把inode号放入数据库中以快速查找。我无法使用此函数进行操作,我必须使用数据库中已存在的所有路径调用
我是否因可移植性原因而没有运气,boost将不会为我提供这样的信息?
(编辑)意图是在扫描文件夹树期间通过硬链接检测重复项。
stat()
或fstat()
)是一起的。我认为在Windows下也应该有类似的东西。为了简单起见,
boost::filesystem
提供了方便的方法,例如我可以使用boost::filesystem::recursive_directory_iterator
遍历目录树。 file_status
告诉我它是否是一个常规文件,但不包括inode号。我找到的最接近的东西是
boost::filesystem::equivalent()
,它需要两个路径。我想这也是最可移植的设计。问题是我想把inode号放入数据库中以快速查找。我无法使用此函数进行操作,我必须使用数据库中已存在的所有路径调用
equivalent()
。我是否因可移植性原因而没有运气,boost将不会为我提供这样的信息?
(编辑)意图是在扫描文件夹树期间通过硬链接检测重复项。
equivalent()
完全可以做到这一点,但我必须执行二次算法。