Path.GetTempFileName()可以缓存吗?

时间:2011-07-13 15:24:39

标签: .net temp

我有一个奇怪的问题......我想我已经将它缩小到我们使用Page.GetTempFileName()创建临时文件的程度。

我有时会收到一条错误消息,指出Cannot create a file when that file already exists.

是否有可能使用Path.GetTempFilename()生成相同的文件名并变为缓存?

我正在更改我的代码:

Path.Combine(System.IO.Path.GetTempPath(), string.Concat(Guid.NewGuid().ToString(), ".xls"));

希望这会生成一个唯一的文件名,但我担心可能会出现同样的问题。

1 个答案:

答案 0 :(得分:2)

Path.GetTempFilename()在磁盘上创建一个实际文件;根据您拥有该文件名时所做的事情,您可能会触发某些内容。它被编写为返回一个实际文件,以避免与过去的旧临时文件名方法相关的竞争条件(例如,在C标准库中特别是tmpnam)。

请注意,如果使用此方法创建的文件超过65,535而不删除它们,或者无法生成唯一文件名,则会抛出异常。

那么,从Path.GetTempFilename()获取后,你用这个文件名做什么?