目标是创建存储文件的随机路径,以便我可以使用随机路径存储大型数量的文件。
答案 0 :(得分:3)
我真的不确定你为什么要这样做。大多数(全部?)系统的容量如此之高,以至于无法考虑它。如果你不得不考虑它,可能还有另外一个问题。例如,Mac OS X可以有2.1 billion files per folder。当然,在某些时候查看文件列表可能会有些问题。
如果您想要随机值,则可以选择crypto/rand
和math/rand
个包。 math/rand
包可能更适合这种情况,因为crypto/rand
依赖于系统生成的熵。 math/rand
基于种子算法。缺点是你必须检查碰撞。碰撞的概率实际上取决于您使用的字符数。你拥有的角色越少,碰撞就越可能。
您可以做的一件事是使用time
包为文件夹名称使用某个频率(天,月)的时间戳。我会尝试避免随机文件名,因为它会使管理成为一场噩梦。如果存在冲突,您始终可以在文件名中添加后缀。
当然,我假设您将存储潜在的大型二进制文件,如图像。如果您要存储小的文本(文本文件),您可能需要考虑使用数据库。
答案 1 :(得分:0)
如果您希望路径“随机”并且不与任何其他路径冲突,请使用SHA-1来散列文件名。碰撞的几率是extraordinarily miniscule。如果你需要简短的路径,只需要取一个哈希的子串,虽然这显然会增加你的路径冲突的机会(这对你来说可能是也可能不是问题)。