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 Answers 4
There are two methods for this:
-
This will create a temporary file and return its name.
-
This will use a cryptographically strong, random string as file name and won't create the file for you.
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.
Comments
Another alternative is the TempFileCollection class. It provides an IDisposable wrapper much like what is suggested in the docs for Path.GetTempFileName().
Comments
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);
...
Comments
Can use the GetTempFileName() method to obtain a fairly unique temporary file name.