我正在写一个“文件共享主机”,我想要重命名所有的文件时,上传到一个唯一的名称,并以某种方式保持跟踪数据库中的名称。由于我不希望两个或更多的文件具有相同的名称(这肯定是不可能的),我正在寻找一种基于键或其他东西为我生成随机名称的算法。
此外,我不想生成一个名称并搜索数据库来查看该文件是否已经存在。我想要确保100%或99%生成的文件名从未被我的应用程序早先创建过。
你知道我该怎么写这样的应用程序吗?
发布于 2009-03-31 02:56:06
您可以根据文件内容本身生成散列。这样做有两个很好的理由:
根据散列的大小,找到两个计算相同散列但内容并不相同的文件的风险很低,您可以通过将文件分块散列来有效地缓解这种风险(这可能会导致一些有趣的存储优化场景:P)。
发布于 2009-03-31 02:37:33
GUIDs是单向的。你基本上保证不会得到任何重复(如果你有一个合适的随机生成器)。
发布于 2009-03-31 02:40:21
您还可以附加自纪元以来的时间。
https://stackoverflow.com/questions/699815
复制相似问题