如果已经存在,则覆盖My.Computer.Network.DownloadFile(vb.net)

时间:2020-03-18 12:01:58

标签: vb.net

我得到了这段代码,就像一个魅力!但是,如何使它覆盖,如果它已经存在呢?谢谢!

    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
        Dim URL As String = "https://finncoding.com/assets/styles/app.css"
        Dim SaveFile As String = "app.css"

        With FolderBrowserDialog1
            TextBox1.Text = .SelectedPath
            My.Computer.Network.DownloadFile(URL, IO.Path.Combine(.SelectedPath, SaveFile))
        End With
    End If
End Sub

1 个答案:

答案 0 :(得分:2)

好的,这就是我解决这个问题的方法。我转到the documentation of My.Computer.Network.DownloadFile,并阅读了有关您所调用方法版本的帮助。一个有两个字符串。它的备注部分显示:

如果目标文件已经存在,则DownloadFile方法不会覆盖现有文件。您可以使用DownloadFile方法的其他重载之一来指示它覆盖现有文件,提供用户凭据或指定特定的超时值。

因此,我继续在文档中查看该方法的其他版本,发现其中一个:

DownloadFile (address As String, destinationFileName As String, userName As String, password As String, showUI As Boolean, connectionTimeout As Integer, overwrite As Boolean)

所以我想知道“我真的只需要地址,destinationFilename和覆盖,我应该为其他参数添加什么?”该文档为其他内容提供了默认值,因此这是一个很好的起点:

地址字符串 要下载的文件的路径,包括文件名和主机地址。

destinationFileName String
File name and path of the downloaded file.

userName String
User name to authenticate. Default is an empty string, "".

password String
Password to authenticate. Default is an empty string, "".

showUI Boolean
True to display the progress of the operation; otherwise False. Default is False.

connectionTimeout Int32
Timeout interval, in milliseconds. Default is 100 seconds.

overwrite Boolean
True to overwrite existing files; otherwise False. Default is False.

因此,我可以说您可以更改代码以使其调用:

My.Computer.Network.DownloadFile(URL, IO.Path.Combine(.SelectedPath, SaveFile), "", "", False, 100000, True)
                                                                                                       ^^^^

这是覆盖的最终True。我将让您决定是否要更改其他任何内容,例如是否显示显示下载进度的UI。希望您能从中获得的最重要的不是答案的单行代码,而是关于如何更好地使用文档来帮助快速解决问题的提示,而不必在这里费力地写下一个问题并等待几个小时。几个字符的解决方案