我想从网上下载数千个文件并在本地保存。什么是最有效的方式?重要的是故障在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()
答案 0 :(得分:0)
如果您要下载多个文件use multiple threads。这样,等待一台服务器的响应不会减慢您的应用程序。
流处理看起来很好,但我不是这些问题的专家。如果您获取非常大的文件,它可能会减少内存消耗以在块中执行。在.net 4.0中,您可以使用Stream.CopyTo。