4

基本的に、ファイルを一時的に使用するだけでなく、最終的にはアプリケーション フォルダーに移動するという次の問題に関して、ベスト プラクティスがあるかどうか疑問に思っています。私はいくつかのオプションに直面しています:

//Option 1 - Random file
String tempfile = Path.GetTempFileName();
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

//Option 2 - Temp Path + Random file name
String tempfile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

//Option 3 - Temp Path + real file name
String tempfile = Path.Combine(Path.GetTempPath(), filename);
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

//Option 4 - Temp Application Path + Random file name
String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName());
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

//Optioin 5 - Temp Application Path + file name
String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, filename);
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

その時点でいくつかのファイルが使用されているため、ファイルを最終的な場所に直接書き込むオプションはありません。一時的な領域に移動する必要があります...

4

3 に答える 3

8

あなたの最初のオプションはとてもいいです。ここで何が起こっているかは、かなり明確で十分に文書化されています。

//Option 1 - Random file
String tempfile = Path.GetTempFileName();
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

Environment.CurrentDirectoryビットを除いて。Astander がこの回答で指摘しているように、ダイアログは Environment.CurrentDirectoryを変更できるため、おそらく AppDomain.BaseDirectory を使用することをお勧めします。

于 2011-01-18T04:28:10.693 に答える
1

//オプション 4 - 一時アプリケーション パス + ランダム ファイル名

String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName());
WriteData(tempfile);
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename);

SecurityExceptions または IOException を発生させないため、これが最良の選択です。

于 2011-01-18T04:27:56.323 に答える
0

これはウィンフォーム?ウェブ?WPF? 何?アプリケーションユーザーのプロファイルに保存しないのはなぜですか?

于 2011-01-18T04:15:12.117 に答える