1

我正在使用一个简单的功能:-

while((br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    //Write the data in downbuffer to a file.
}

虽然它适用于文件(在 zip 文件下载中多次测试 - http://citylan.dl.sourceforge.net/project/cric-scoreslive/v8.5-Live%20Cricket%20Scores%20Desktop%20App.zip ),当链接指向 HTML 文件时它不起作用(在http://www.mediafire.com/?rc3kj22p1tb4vi9上测试)。使用后面的链接,它只下载和写入大约 1 KB 的数据,而页面约为 60 KB。如果它与没有被刷新或任何事情有关,想知道它是如何处理文件下载的?相关代码是这样的:-(在单独的线程中运行)-

wreq = (HttpWebRequest)WebRequest.Create(uri);
wres = wreq.GetResponse();
fs = new FileStream(totalpath, FileMode.Create);
bw = new BinaryWriter(fs);
br = new BinaryReader(wres.GetResponseStream());
while((onecount=br.Read(downbuffer, 0, downbuffer.Length)>0)
{
    bw.Write(downbuffer, 0, onecount);
    totalcount += onecount;
}

totalpath 指向一个文件,没什么特别的。下缓冲大小为 20 KB,我的网速约为 60 kBps(512kbps)。

4

1 回答 1

4

您可以通过避免它来解决整个问题:

using (var client = new WebClient())
{
    client.DownloadFile(uri, totalpath);
}
于 2012-10-11T18:00:31.373 回答