小编典典

如何使用 .NET 创建具有特定扩展名的临时文件?

all

我需要生成一个带有 .csv 扩展名的唯一临时文件。

我现在做的是

string filepath = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");

但是,这并不能保证我的 .csv 文件是唯一的。

我知道我遇到冲突的机会非常低(特别是如果您认为我没有删除 .tmp 文件),但这段代码对我来说并不好。

当然,我可以手动生成随机文件名,直到最终找到一个唯一的文件名(这应该不是问题),但我很想知道其他人是否找到了解决这个问题的好方法。


阅读 121

收藏
2022-04-19

共1个答案

小编典典

保证是(统计上)唯一的:

string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".csv";

(引用关于碰撞概率的维基文章:

…一个人每年被陨石击中的风险估计为 170 亿分之一 [19],这意味着概率约为 0.00000000006(6 ×
10-11),相当于创造几十个的几率一年内有数万亿个 UUID,并且有一个重复。换句话说,仅在接下来的 100 年每秒生成 10 亿个 UUID
之后,仅创建一个副本的概率约为 50%。如果地球上每个人都拥有 6 亿个 UUID,那么重复的概率约为 50%

编辑:另请参阅 JaredPar 的评论。

2022-04-19