2013-01-15 15 views
6

私の質問に関する情報は見つかりません。私の検索の努力が答えを見つけるのに十分でない場合は、私を許してください。私はちょうど私の車輪を回転させないようにしたい。WebClient.DownloadFileAsyncはファイルがすでにディスク上に存在する場合、ファイルを上書きしますか?

ありがとうございます!

フォローアップ:上書きしない場合は、(可能な場合)どうすれば入手できますか?

+0

それを試してみるだけで十分だろう。そうでなければ;ダウンロードする前にその名前のファイルを確認し、ダウンロードする前に削除してください。 – Servy

+1

これはGoogleに良い質問のように思えますが、あなたが私に尋ねると(これはあなたでした);] – plast1K

答えて

21

30第二の試験は、それが

テスト上書きしないことを確認する:

using (WebClient client = new WebClient()) 
{ 
    client.DownloadFileAsync(new Uri("http://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe"), @"C:\Test.exe"); 
} 

のファイルが存在する場合は再度

+0

ありがとう。私は助けに感謝します。 – Kashif

+7

ありがとう、私は28秒を保存しました。 :-) –

+0

私も...この詳細はドキュメントにありませんでした –

0

downlaoded場合TEST.EXEははい、overwittenれます。

名前を変更する場合、またはOpenFileDialogue()に接続している場合は、それはあなたの裁量です。

2

WebClientクラスは、多くの詳細と制御を抑制するように設計されていることは明らかです。非同期でファイルを非常に簡単にダウンロードし、ダウンロードしたデータをディスクに書き込む方法を制御する独自のメソッドを記述することができます。

codeprojectのthis solutionには、WebRequestWebResponseを使用してファイルをダウンロードするクラスが含まれているので、はるかに制御が可能です。名前がwebdataであるクラスを参照してください。あなたも注意を払う必要がありますすることができますコード:

FileStream newFile = new FileStream(targetFolder + file, FileMode.Create); 
newFile.Write(downloadedData, 0, downloadedData.Length); 
newFile.Close(); 

FileMode Enumerationは、ファイルがすでに存在する場合IOExceptionがスローされますファイルFileMode.CreateNewを保存する動作を指示する一連の部材が含まれています。可能であれば、FileMode.Createはファイルを上書きします。

WebClient.DownloadFileAsyncを使用することを強くお勧めする場合は、すでに言及したように、既存のファイルがOpenFileDialogによって上書きされることをユーザーに伝えることができますが、ダウンロードには時間がかかり、ユーザーがダウンロード中に別のファイルを作成していないことを確認します。

関連する問題