Preciso gerar um arquivo temporário exclusivo com uma extensão .csv.
O que eu faço agora é
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
No entanto, isso não garante que meu arquivo .csv seja exclusivo.
Sei que as chances de colisão são muito baixas (especialmente se você considerar que eu não excluo os arquivos .tmp), mas esse código não parece bom para mim.
É claro que eu poderia gerar manualmente nomes de arquivos aleatórios até encontrar um único (o que não deve ser um problema), mas estou curioso para saber se outras pessoas encontraram uma boa maneira de lidar com esse problema.
GetTempFileName()
criar um novo arquivo sempre que você o chamar. - Se você alterar imediatamente a string para outra coisa, você acabou de criar um novo arquivo de zero byte no diretório temporário (e como outros observaram, isso acabará causando uma falha ao atingir 65535 arquivos lá ...) - - Para evitar isso, exclua todos os arquivos criados nessa pasta (incluindo os retornados por GetTempFileName()
, idealmente em um bloco final).