12

I would like to do something like the below. What function returns me an unique file that is opened? so i can ensure it is mine and i wont overwrite anything or write a complex fn generate/loop

BinaryWriter w = GetTempFile(out fn);
w.close();
File.Move(fn, newFn);

4 Answers4

19

There are two methods for this:

Usually the first method suffices; the documentation for GetRandomFileName says:

When the security of your file system is paramount, this method should be used instead of GetTempFileName.

Joey
  • 344,408
  • 85
  • 689
  • 683
3

Another alternative is the TempFileCollection class. It provides an IDisposable wrapper much like what is suggested in the docs for Path.GetTempFileName().

ScottS
  • 8,455
  • 3
  • 30
  • 50
2

You can do something like this:

var path = Path.GetTempFileName();
var stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
var writer = new BinaryWriter(stream);
  ...
Jeffrey Hantin
  • 35,734
  • 7
  • 75
  • 94
1

Can use the GetTempFileName() method to obtain a fairly unique temporary file name.

Pat
  • 5,263
  • 1
  • 36
  • 53