J'ai besoin de générer un fichier temporaire unique avec une extension .csv.
Ce que je fais en ce moment c'est
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Cependant, cela ne garantit pas que mon fichier .csv sera unique.
Je sais que les chances d'avoir une collision sont très faibles (surtout si vous considérez que je ne supprime pas les fichiers .tmp), mais ce code ne me semble pas bon.
Bien sûr, je pouvais générer manuellement des noms de fichiers aléatoires jusqu'à ce que j'en trouve finalement un unique (ce qui ne devrait pas être un problème), mais je suis curieux de savoir si d'autres ont trouvé une bonne façon de résoudre ce problème.
GetTempFileName()
crée un nouveau fichier chaque fois que vous l'appelez. - Si vous changez immédiatement la chaîne en quelque chose d'autre, vous venez de créer un nouveau fichier zéro octet dans votre répertoire temporaire (et comme d'autres l'ont remarqué, cela finira par entraîner son échec lorsque vous frapperez 65535 fichiers là-dedans ...) - - Pour éviter cela, assurez-vous de supprimer tous les fichiers que vous créez dans ce dossier (y compris ceux renvoyés par GetTempFileName()
, idéalement dans un bloc enfin).