我找不到与我的问题相关的任何信息。如果我的搜索努力没有足够好,以至于找不到答案,请原谅我。我只是想避免白费力气。
谢谢!
跟进:如果它没有覆盖,我该如何让它覆盖(如果可能的话)?
我找不到与我的问题相关的任何信息。如果我的搜索努力没有足够好,以至于找不到答案,请原谅我。我只是想避免白费力气。
谢谢!
跟进:如果它没有覆盖,我该如何让它覆盖(如果可能的话)?
一个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");
}
如果重新下载,Test.exe 将被覆盖。
WebClient
类显然旨在抑制大量的细节和控制。您可以编写自己的方法轻松异步下载文件并控制下载数据如何写入磁盘。WebRequest
和 WebResponse
下载文件的类,允许更多控制。请参见包含的名为 webdata
的类。您需要注意的代码如下:FileStream newFile = new FileStream(targetFolder + file, FileMode.Create);
newFile.Write(downloadedData, 0, downloadedData.Length);
newFile.Close();
FileMode 枚举
包含一系列成员,用于控制保存文件的行为。如果文件已经存在,则 FileMode.CreateNew
会抛出 IOException
。而 FileMode.Create
则会在可能的情况下覆盖现有文件。
如果您坚持使用 WebClient.DownloadFileAsync
,那么正如其他人已经提到的那样:您可以通过 OpenFileDialog
向用户说明将覆盖现有文件,但某些下载可能需要耗费时间,而且无法保证用户在下载过程中没有创建另一个文件。
OpenFileDialogue()
中,那就由您自行决定。