Muszę wygenerować unikalny plik tymczasowy z rozszerzeniem .csv.
To, co teraz robię, to
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Nie gwarantuje to jednak, że mój plik .csv będzie unikalny.
Wiem, że szanse na kolizję są bardzo niskie (zwłaszcza jeśli uważasz, że nie usuwam plików .tmp), ale ten kod nie wygląda mi dobrze.
Oczywiście mogłem ręcznie generować losowe nazwy plików, aż w końcu znajdę unikalną (co nie powinno być problemem), ale jestem ciekawy, czy inni znaleźli dobry sposób na poradzenie sobie z tym problemem.
GetTempFileName()
tworzy nowy plik za każdym razem, gdy go wywołujesz. - Jeśli natychmiast zmienisz ciąg znaków na coś innego, właśnie utworzyłeś nowy plik zero-bajtowy w swoim katalogu tymczasowym (i jak zauważyli inni, ostatecznie spowoduje to awarię, gdy trafisz tam 65535 plików ...) - - Aby tego uniknąć, usuń wszystkie pliki, które utworzysz w tym folderze (w tym te zwrócone przez GetTempFileName()
, najlepiej w końcu).