.NET で特定の拡張子を持つ一時ファイルを作成するにはどうすればいいですか? 質問する

.NET で特定の拡張子を持つ一時ファイルを作成するにはどうすればいいですか? 質問する

.csv 拡張子を持つ一意の一時ファイルを生成する必要があります。

私が今やっていることは

string filepath = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");

ただし、これによって .csv ファイルが一意になることが保証されるわけではありません。

衝突が発生する可能性は非常に低いことはわかっています (特に、.tmp ファイルを削除しないことを考慮すると) が、このコードは適切ではないと思います。

もちろん、最終的に一意のファイル名が見つかるまで手動でランダムなファイル名を生成することもできます (これは問題にならないはずです) が、他の人がこの問題に対処する良い方法を見つけたかどうかを知りたいです。

ベストアンサー1

(統計的に)一意であることが保証されています:

string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".csv"; 

(衝突の確率に関するウィキペディアの記事から引用すると:

...隕石に当たる確率は年間170億分の1と推定されている[19]。つまり、確率は約0.00000000006(6×10−11)であり、これは1年間に数十兆個のUUIDが生成され、そのうち1つが重複する確率に相当する。言い換えれば、今後100年間、毎秒10億個のUUIDが生成された後にのみ、重複が1つ生成される確率は約50%になる。地球上のすべての人が6億個のUUIDを所有している場合、重複が1つ生成される確率は約50%になる。

編集: JaredPar のコメントもご覧ください。

おすすめ記事