使用.NET生成具有给定扩展名的唯一临时文件名

时间:2009-07-14 00:47:04

标签: c# .net

  

可能重复:
  How can I create a temp file with a specific extension with .net ?

可以通过调用

在.NET中创建临时文件
string fileName = System.IO.Path.GetTempFileName();

这将在临时目录中创建一个扩展名为.TMP的文件。

如果您特别希望它有不同的扩展名怎么办?为了这个例子,假设我需要一个以.TR5结尾的文件。

明显的(和错误的)解决方案是调用

string fileName = Path.ChangeExtension(Path.GetTempFileName(), "tr5"))

这里的问题是:

  • 它仍在temp目录中生成一个空文件(例如tmp93.tmp),现在无限期地挂起
  • 没有保证所产生的文件名(tmp93.tr5)尚未存在

是否有一种直接且安全的方法来生成具有特定文件扩展名的临时文件?

2 个答案:

答案 0 :(得分:11)

答案 1 :(得分:1)

我不知道是否有一种支持的方法来生成.tmp以外的扩展名,但这会给你一个独特的文件:

string fileName = Path.ChangeExtension(Path.GetTempFileName(), Guid.NewGuid().ToString() + "tr5"))

不是一个优雅的解决方案,我不确定你是否需要根据具体的扩展进行检索,但你仍然可以为此编写一个模式。