C# – Generate a unique temporary file name with a given extension using .NET

.netc++

Possible Duplicate:
How can I create a temp file with a specific extension with .net ?

It is possible to create a temporary file in .NET by calling

string fileName = System.IO.Path.GetTempFileName();

This will create a file with a .TMP extension in the temporary directory.

What if you specifically want it to have a different extension? For the sake of this example, lets say that I needed a file ending with .TR5.

The obvious (and buggy) solution is to call

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

The problems here are:

  • It has still generated an empty file (eg tmp93.tmp) in the temp directory, which will now hang around indefinitely
  • There is no gurantee that the resulting filename (tmp93.tr5) isn't already existing

Is there a straightforward and safe way to generate a temporary file with a specific file exension?

Related Question