我需要生成一个扩展名为 .csv 的唯一临时文件。
我现在做的是
string filepath = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
但是,这并不能保证我的 .csv 文件是唯一的。
我知道发生冲突的可能性非常低(特别是如果您认为我没有删除 .tmp 文件),但这段代码对我来说看起来不太好。
当然,我可以手动生成随机文件名,直到我最终找到一个唯一的文件名(这不应该成为问题),但我很想知道其他人是否找到了解决此问题的好方法。
保证(统计上)唯一:
string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".csv";
(引用维基百科关于碰撞概率的文章:
...一个人每年被撞击的风险
陨石估计是一颗
170 亿的机会[19],这意味着
概率约为 0.00000000006
(6 × 10−11),相当于
创造了数十万亿
一年内的 UUID 并有一个
复制。换句话说,只有在之后
每年生成 10 亿个 UUID
未来100年的第二位
只创建一个的概率
重复率约为 50%。这
一个重复的概率是
大约 50% 如果地球上的每个人
拥有6亿个UUID
编辑:另请参阅 JaredPar 的评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)