Devo generare un file temporaneo univoco con estensione .csv.
Quello che faccio adesso è
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Tuttavia, ciò non garantisce che il mio file .csv sarà univoco.
So che le probabilità che io abbia mai avuto una collisione sono molto basse (specialmente se si considera che non elimino i file .tmp), ma questo codice non mi sembra buono.
Ovviamente potrei generare manualmente nomi di file casuali fino a quando non ne trovo uno unico (che non dovrebbe essere un problema), ma sono curioso di sapere se altri hanno trovato un modo carino per affrontare questo problema.
GetTempFileName()
crea un nuovo file ogni volta che lo chiami. - Se cambi immediatamente la stringa in qualcos'altro, hai appena creato un nuovo file a zero byte nella tua directory temporanea (e come altri hanno notato, questo alla fine causerà il fallimento quando colpisci 65535 file lì dentro ...) - - Per evitare ciò, assicurati di eliminare tutti i file che crei in quella cartella (inclusi quelli restituiti da GetTempFileName()
, idealmente in un blocco finally).