WebClient.如果该文件已经存在于磁盘上,则覆盖该文件
本文关键字:文件 磁盘 覆盖 于磁盘 如果 存在 WebClient | 更新日期: 2023-09-27 17:53:52
我找不到任何关于我的问题的信息。请原谅,如果我的搜索努力还不够好,没有找到答案。我只是不想白费力气。
谢谢!
跟进:如果它不覆盖,我怎么能让它(如果可能的话)?
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
类显然是为了抑制大量的细节和控制而设计的。您可以编写自己的方法来非常轻松地异步下载文件,并控制将下载的数据写入磁盘的方式。
我知道这个解决方案在codeproject中包含一个类,它使用WebRequest
和WebResponse
下载文件,允许更多的控制。参见所包含的名为webdata
的类。你也需要注意的代码:
FileStream newFile = new FileStream(targetFolder + file, FileMode.Create);
newFile.Write(downloadedData, 0, downloadedData.Length);
newFile.Close();
FileMode Enumeration
包含一系列成员,这些成员规定了保存文件的行为。如果文件已经存在,FileMode.CreateNew
将抛出IOException
。如果可能的话,FileMode.Create
将覆盖文件。
如果你坚持使用WebClient.DownloadFileAsync
,那么,正如其他人已经提到的:你可以只是告诉用户,现有的文件将被覆盖的OpenFileDialog
的手段,但有些下载可能是耗时的,并没有说,用户在下载期间没有创建另一个文件。
如果文件存在,则为存在
如果你要重命名它,或者如果你把它钩到OpenFileDialogue()
,那是你的自由选择。