1. ホーム
  2. c#

[解決済み】.NETで特定の拡張子を持つtempファイルを作成するには?

2022-03-29 12:24:58

質問

拡張子が.csvのユニークな一時ファイルを生成する必要があります。

今、私がしていることは

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

しかし、これでは私の.csvファイルがユニークであることが保証されません。

衝突の可能性が非常に低いことは分かっていますが(特に私が.tmpファイルを削除しないことを考慮すれば)、このコードは私には良いとは思えません。

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

解決方法は?

統計的に)ユニークであることが保証されている。

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

(衝突の確率に関するwikiの記事から引用します。

<ブロッククオート

...1人が1年間に被弾するリスクは、以下の通りです。 隕石は1個と推定される 170億分の1の確率[19]、つまり その確率は約0.00000000006です。 (6 × 10-11) に相当する確率です。 数十兆個の UUIDが1年に1個でもあれば が複製されます。つまり 10億個のUUIDを生成する 今後100年間は 1個しか作れない確率 複製は50%程度になる。つまり 複製が1つできる確率は 地球上のすべての人が、約50%の確率で 6億のUUIDを所有する

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