【发布时间】:2018-09-08 20:48:12
【问题描述】:
我制作了一个小程序,可以从我的网站下载 .zip 文件,然后将其安装在特定目录中。除非已经存在同名文件,否则它工作正常,然后我收到错误消息。这是我的代码。
If Form1.CheckBox1.Checked = True Then
Label4.Text = "Downloading Test File!"
wc.DownloadFileAsync(New Uri("http://www.example.com/TestFile.zip"), Directory + "\TestFile.zip")
While wc.IsBusy = True
Application.DoEvents()
End While
ListBox1.Items.Add("Test File")
End If
'Install
If Form1.CheckBox1.Checked = True Then
ZipFile.ExtractToDirectory(Directory + "\TestFile.zip", Directory_Select.TextBox1.Text)
ListBox2.Items.Add("Test File")
End If
例如,如果“TestFile.zip”中的文件与安装位置同名,它会给我以下错误:
文件“filePath”已经存在。
它没有完成提取,因为同名文件已经存在。事先删除文件不是一个好的解决方案,因为会有多个同名文件。
提取时如何替换?
还有一种方法可以暂停程序直到文件完成提取,因为有些文件很大并且需要一些时间才能提取出来。
提前感谢您帮助我,我是新手,还在学习中。感谢您的帮助。
【问题讨论】:
-
定义“暂停程序”的含义。这似乎是一个 WinForms 应用程序,因此在提取时,UI 线程无论如何都会被阻止;这就是你所说的“暂停”吗?或者你的意思是相反的(即,在提取时保持程序响应)?
-
because there will be multiple files with the same name.,听起来你有更大的问题。你怎么能拥有一个同名的文件并在同一个目录中多次键入?另一方面,删除DoEvents,它们是代码异味。 -
@Codexer 我认为 OP 的意思是说 “存档中将有多个文件的名称已经存在于目标文件夹中”。