Может ли Path.GetTempFileName() когда-либо кэшироваться?
У меня странная проблема... и я думаю, что сузил ее до такой степени, что мы создаем временный файл, используя Page.GetTempFileName()
,
Иногда я получаю сообщение об ошибке, в котором говорится, что Cannot create a file when that file already exists.
Есть ли шанс, что с помощью Path.GetTempFilename()
может сгенерировать то же имя файла и стать кэшированным?
Я изменяю свой код для использования:
Path.Combine(System.IO.Path.GetTempPath(), string.Concat(Guid.NewGuid().ToString(), ".xls"));
В надежде, что это сгенерирует уникальное имя файла, но я обеспокоен тем, что может возникнуть та же проблема.
1 ответ
Path.GetTempFilename() создает фактический файл на диске; в зависимости от того, что вы делаете, когда у вас есть это имя файла, вы можете что-то вызывать. Он написан так, чтобы возвращать реальный файл, чтобы избежать условий гонки, связанных с более старыми временными методами имен файлов из прошлого (особенно tmpnam в стандартной библиотеке C, например).
Обратите внимание, что он будет выдавать исключения, если с помощью этого метода создано более 65 535 файлов без их удаления или если он не может создать уникальное имя файла.
Итак, что вы делаете с этим именем файла после его возврата из Path.GetTempFilename()?