2013-03-10 7 views
-1

Я делаю автоматический загрузчик файлов, и мне нужно его перезагрузить и перезаписать файл, когда я нажму кнопку.Как перезаписать загруженный файл vb.net

Вот мой код:

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 

ответ

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 

(EDIT - изменен, чтобы показать метод асинхронной в соответствии с просьбой в комментариях)

Обратите внимание, что файл будет перезаписан, если он существует ->http://msdn.microsoft.com/en-us/library/ez801hhe(v=VS.80).aspx

+0

Может ли кто-нибудь вывести код с помощью DownloadFileAsync? – TheCreepySheep

+0

Да, см. Обновленный. – GojiraDeMonstah

4

Существует перегрузки для DownloadFile, что позволяет перезапись предыдущего файла

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

Как из MSDN

  • адрес = строка или Uri. Путь к файлу для загрузки, включая файл имя и адрес хоста. Необходимые.
  • destinationFileName = String. Имя файла и путь для загруженного файла . Необходимые.
  • userName = String. Имя пользователя для аутентификации. По умолчанию используется пустая строка , "".
  • password = String.Password для аутентификации. По умолчанию используется пустая строка, "".
  • showUI = Boolean. Указывает, следует ли отображать ход операции . Значение по умолчанию - False.
  • подключениеTimeout = Int32. Интервал ожидания, в миллисекундах. По умолчанию - 100 секунд.
  • overwrite = Boolean. Указывает, следует ли перезаписывать существующие файлы. По умолчанию False.

Таким образом, вы можете изменить свой код таким образом

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 
+1

Ваш, безусловно, лучший ответ, так как он отвечает на исходный вопрос. – GojiraDeMonstah

Смежные вопросы