I need to generate a unique temporary file with a .csv extension.
What I do right now is
string filepath = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
However, this doesn't guarantee that my .csv file will be unique.
I know the chances I ever got a collision are very low (especially if you consider that I don't delete the .tmp files), but this code doesn't looks good to me.
Of course I could manually generate random file names until I eventually find a unique one (which shouldn't be a problem), but I'm curious to know if others have found a nice way to deal with this problem.
GetTempFileName()creates a new file each time you call it. -- If you immediately change the string to something else, you just created a new zero byte file in your temp directory (and as others have noted, this will eventually cause it to fail when you hit 65535 files in there...) -- To avoid this, make sure to delete any files that you create in that folder (including the ones returned byGetTempFileName(), ideally in a finally block).