-1

我正在制作一个自动文件下载器,当我按下按钮时,我需要它重新下载并覆盖文件。

这是我的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  My.Computer.Network.DownloadFile _
    ("http://www.randomurl.com/randomfile.txt", _
    Path.Combine(Environment.GetFolderPath( _
    Environment.SpecialFolder.ApplicationData), _
    "test/randomfile.txt"))
End Sub
4

2 回答 2

5

DownloadFile有一个重载,允许覆盖前一个文件

 My.Computer.Network.DownloadFile 
       (address, destinationFileName, userName,
        password, showUI, connectionTimeout, overwrite)

从 MSDN

  • 地址 = 字符串或 Uri。要下载的文件的路径,包括文件名和主机地址。必需的。
  • 目的地文件名 = 字符串。下载文件的文件名和路径。必需的。
  • 用户名 = 字符串。要进行身份验证的用户名。默认为空字符串“”。
  • password = String.Password 进行身份验证。默认为空字符串“”。
  • showUI = Boolean。指定是否显示操作的进度。默认为假。
  • 连接超时 = Int32。超时间隔,以毫秒为单位。默认值为 100 秒。
  • 覆盖 = 布尔值。指定是否覆盖现有文件。默认为假。

因此,您可以通过这种方式更改您的代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  My.Computer.Network.DownloadFile _
    (address := "http://www.randomurl.com/randomfile.txt", _
    destinationFileName := Path.Combine(Environment.GetFolderPath( _
    Environment.SpecialFolder.ApplicationData), _
    "test/randomfile.txt"), _
    userName := string.Empty, password := string.Empty, _
    showUI := False, connectionTimeout := 100000, _
    overwrite := True)
End Sub
于 2013-03-10T17:24:48.883 回答
1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim uri As System.Uri = New System.Uri("http://www.randomurl.com/randomfile.txt")
    Dim webclient As System.Net.WebClient = New System.Net.WebClient()

    Dim path As String = New String(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test\\randomfile.txt"))
    Dim fileInfo As System.IO.FileInfo = New System.IO.FileInfo(path)
    If Not System.IO.Directory.Exists(fileInfo.Directory.FullName) Then
        System.IO.Directory.CreateDirectory(fileInfo.Directory.FullName)
    End If

    AddHandler webclient.DownloadFileCompleted, AddressOf webclient_DownloadDataCompleted

    webclient.DownloadFileAsync(uri, path)

End Sub


Private Sub webclient_DownloadDataCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)

    MessageBox.Show("Your download has completed.")

End Sub

(编辑 - 更改为按照评论中的要求显示异步方法)

请注意,如果文件存在,将被覆盖 -> http://msdn.microsoft.com/en-us/library/ez801hhe(v=VS.80).aspx

于 2013-03-10T17:28:41.960 回答