Creating a temporary directory in Windows?


What's the best way to get a temp directory name in Windows? I see that I can use GetTempPath and GetTempFileName to create a temporary file, but is there any equivalent to the Linux / BSD mkdtemp function for creating a temporary directory?

4/27/2012 5:21:23 PM

Accepted Answer

No, there is no equivalent to mkdtemp. The best option is to use a combination of GetTempPath and GetRandomFileName.

You would need code similar to this:

public string GetTemporaryDirectory()
   string tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
   return tempDirectory;
11/10/2008 5:00:45 PM

I hack Path.GetTempFileName() to give me a valid, pseudo-random filepath on disk, then delete the file, and create a directory with the same file path.

This avoids the need for checking if the filepath is available in a while or loop, per Chris' comment on Scott Dorman's answer.

public string GetTemporaryDirectory()
  string tempFolder = Path.GetTempFileName();

  return tempFolder;

If you truly need a cryptographically secure random name, you may want to adapt Scott's answer to use a while or do loop to keep trying to create a path on disk.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow