如何将目录路径转换为唯一的数字标识符(Linux / C)?
我正在研究获取目录(文件夹)并获取某种形式的唯一数字标识符的方法.我已经研究过“字符串到哈希”方法,但是,Pigeon Hole Principle意味着永远不能为每个字符串派生一个真正唯一的数字.
字符串到唯一哈希是没有用的. 我最近一直在研究实现目标的其他方法,因此有以下问题要问: 目录时间戳 – 它们的“独特性”如何? 如果有人有其他方法/技术他们想分享,我会很乐意听:) 编辑1为了澄清我的用例以回应到目前为止发布的答案:我正在使用Android平台,因此文件系统没有链接到任何其他(当然除了可移动媒体,如Micro SD卡). 我将每个路径插入数据库,但在查询表时尝试避免字符串比较.这里不能使用map / hashmaps.是的,路径本身是唯一的,但理想情况下我需要一个数字标识符,可用于查询表而不是路径本身.标识符每个路径也必须是唯一的.我已经尝试过std :: collat??e,但发现哈希中有很多碰撞(一个20,000个路径的数据集,大约100个碰撞).更令人惊讶的是,每次我的应用程序运行时,哈希值似乎都大不相同.我想知道它是否以某种方式播种? 非常感谢, 解决方法
在任何基于UNIX的系统上,您可以使用inode编号作为该文件系统中的唯一标识符.将其与设备编号相结合将使其在机器中独一无二.如果您希望它是全局唯一的,您可以输入系统的主MAC地址.
但请记住: >如果移动或重命名目录,则inode编号将“跟随”该目录.如果删除并替换目录,它将更改.>除了一个或两个非常特殊的目录之外,inode编号在系统之间不会很稳定. (例如,/通常是inode 2.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |