Как загрузить файл в vb .net с таймаутом загрузки? - PullRequest
0 голосов
/ 04 февраля 2010

Я хочу скачать тысячи файлов из Интернета и сохранить их локально.Какой самый эффективный способ?Важно время ожидания сбоев в течение 10 секунд.

Есть ли лучший способ для потоковой передачи одного потока в другой?Может быть, меньший буфер, например, 1024 байта за раз, более эффективен для больших файлов?

Dim w_req As System.Net.HttpWebRequest = CType(System.Net.HttpWebRequest.Create("http://blah.blah.blah/blah.html"), System.Net.HttpWebRequest)
w_req.Timeout = 10000
Dim w_res As System.Net.HttpWebResponse = CType(w_req.GetResponse(), System.Net.HttpWebResponse)
Dim br As New System.IO.BinaryReader(w_res.GetResponseStream())
Dim fs As New System.IO.FileStream(LocalFileName, IO.FileMode.CreateNew, IO.FileAccess.Write, IO.FileShare.Write)
Dim b() As Byte = br.ReadBytes(CInt(br.BaseStream.Length))
fs.Write(b, 0, b.Length)
fs.Close()
br.Close()

1 Ответ

0 голосов
/ 04 февраля 2010

Если вы хотите загрузить несколько файлов, использовать несколько потоков .Таким образом, ожидание ответа одного сервера не замедлит работу вашего приложения.


Обработка потоковой информации мне подходит, но я не эксперт в этих вопросах.Если вы выбираете очень большие файлы, это может уменьшить потребление памяти, чтобы делать это порциями.В .net 4.0 вы сможете использовать Stream.CopyTo .

Смежный вопрос: Лучший способ копирования между двумя экземплярами Stream - C #

...