gpt4 book ai didi

.net - 如何在 .NET 中创建 12 个字符长的随机文件夹名称

转载 作者:行者123 更新时间:2023-12-03 18:11:00 27 4
gpt4 key购买 nike

我想在我的网站上创建随机文件夹名称来存储图像及其缩略图,但我没有使用生成的 guid 的完整版本,而是考虑只使用它的一部分,可能只是前 8 个字符,可能还有 base64 编码它。不过我担心可能发生碰撞。

有人能指出我正确的方向,这是否是一个足够好的主意?如果我想将名称保留在一定数量的字符下,是否可以使用其他解决方案?

更新 :我试图远离 path.GetRandomFileName ,因为它使用原始 guid 并且它不是 12 个字符长......

最佳答案

为什么不直接使用这样的东西,然后循环直到可以创建没有冲突的文件?

 const string ValidChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

static string GenerateName(Random random, int length)
{
char[] chars = new char[length];
for (int i=0; i < length; i++)
{
chars[i] = ValidChars[random.Next(ValidChars.Length)];
}
return new string(chars);
}

传入 RNG 的原因是为了避免在方法中创建新 RNG(快速连续调用时重复)而不使用静态 RNG(不是线程安全的)的典型问题。

另一种方法是使用单个静态只读 RNG,并通过锁定在 GenerateName 中序列化调用。

主要的一点是,您以某种方式生成了一个随机名称,并且您只是不断尝试创建具有随机名称的文件,直到成功为止,这可能会很快发生(12 个字符 [A-Z 0-9] 给出了 4,738,381,338,321,616,896 种可能的组合)。

关于.net - 如何在 .NET 中创建 12 个字符长的随机文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com