Necesito generar un archivo temporal único con una extensión .csv.
Lo que hago ahora es
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Sin embargo, esto no garantiza que mi archivo .csv sea único.
Sé que las posibilidades de que tenga una colisión son muy bajas (especialmente si consideras que no elimino los archivos .tmp), pero este código no me parece bien.
Por supuesto, podría generar manualmente nombres de archivos aleatorios hasta que finalmente encuentre uno único (que no debería ser un problema), pero tengo curiosidad por saber si otros han encontrado una buena manera de lidiar con este problema.
GetTempFileName()
crea un nuevo archivo cada vez que lo llama. - Si cambia inmediatamente la cadena a otra cosa, acaba de crear un nuevo archivo de cero bytes en su directorio temporal (y, como han señalado otros, esto eventualmente hará que falle cuando golpee 65535 archivos allí ...) - - Para evitar esto, asegúrese de eliminar los archivos que cree en esa carpeta (incluidos los que devuelve GetTempFileName()
, idealmente en un bloque finalmente).