将唯一文件路径转换为唯一整数

时间:2017-01-09 21:28:38

标签: node.js algorithm unique filepath

我经常使用文件路径为某些软件系统提供某种唯一ID。有没有办法采用文件路径并以相对快速(计算)的方式将其转换为唯一的整数?

我可以使用更大的整数。据我所知,这必须是一个非常漂亮的算法,但在某些情况下会非常有用。

有人知道这样的事情是否存在?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用inode编号:

fs.statSync(filename).ino

答案 1 :(得分:1)

如果程序仅在一台计算机上运行而且您不关心复制旧的已删除文件的ID的新文件,那么@ djones建议使用inode编号是好的。重新使用了inode编号。

另一种简单方法是将路径散列到大整数空间。例如。使用128位杂音(在Java中我使用的是Guava Hashing类;有几个js端口),十亿个路径之间发生碰撞的几率仍然是1/2 ^ 96。如果您真的偏执,请保留一组您已经使用过的哈希值,并在碰撞时重新进行哈希值。

答案 2 :(得分:1)

这只是我的评论转向答案。 如果在内存中运行它,则可以使用相应语言中的一个标准哈希映射。不只是文件名,而是任何类似的情况。通常,不同编程语言中的哈希映射满足桶的冲突,因此哈希值和相应的桶号将提供唯一的ID。

顺便说一句,编写自己的hashmap并不难,这样你就可以控制底层结构(例如检索数字等)。