Мне нужно создать уникальный временный файл с расширением .csv.
Что я делаю сейчас
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Однако это не гарантирует, что мой файл .csv будет уникальным.
Я знаю, что вероятность моего столкновения очень мала (особенно если учесть, что я не удаляю файлы .tmp), но этот код не выглядит для меня хорошим.
Конечно, я мог вручную генерировать случайные имена файлов, пока в конце концов не нашел уникальное (что не должно быть проблемой), но мне любопытно узнать, нашли ли другие хороший способ справиться с этой проблемой.
GetTempFileName()
создает новый файл каждый раз, когда вы вызываете его. - Если вы немедленно измените строку на что-то другое, вы просто создали новый нулевой байт-файл во временном каталоге (и, как уже отмечали другие, это в конечном итоге приведет к сбою при попадании туда 65535 файлов ...) - - Чтобы избежать этого, обязательно удалите все файлы, которые вы создаете в этой папке (включая те, которые были возвращены GetTempFileName()
, в идеале, в блоке finally).