c# HttpWebRequest下载文件不完整

HttpWebRequestWeb=(HttpWebRequest)WebRequest.Create(path);Byte[]b=newByte[Web.GetResp... HttpWebRequest Web = (HttpWebRequest)WebRequest.Create(path);
Byte[] b = new Byte[ Web.GetResponse().ContentLength ];
Web.GetResponse().GetResponseStream().Read(b , 0 , Web.GetResponse().ContentLength);
然后
FILEStream写入b
结果 文件总是不完整。。特别是图片的时候,看的很明显,图片都缺很多。

不知道我什么写的不对呢 。高手指点。
展开
 我来答
csd314
推荐于2016-05-13 · TA获得超过493个赞
知道小有建树答主
回答量:730
采纳率:50%
帮助的人:539万
展开全部
偶不知道你这在哪儿抄的,三个问题:
1.居然GetResponse()了三次,难道你不知道应该GetResponse()然后声明个变量存起来么,知不知道GetResponse()方法到底是做什么哦,看你的代码感觉你懒得要死,你这样写会导致文件被下载三次,既占用带宽又浪费系统资源。而且如果你下载的是频繁变化的网页,比如搜索引擎的搜索结果,也许你前面获得的GetResponse().ContentLength跟后面获得的GetResponse().ContentLength根本不一致
2.你这代码编译通过没哦,难道你不知道Stream.Read 方法的最后一个参数是int型的,而GetResponse().ContentLength是long型的
3.想必你做这之前还是有去网上查过别人是怎么做的吧,难道你没注意到别人是大部分是用一个循环来一点点处理的么?试想一下,且不考虑上述两问题,如果下载一个几G或更大的文件,像你这样岂不是要把几G的数据一下全存到内存里那想不死机都难。

你这代码又没有良好的编程习惯又对网络编程和流处理理解不深入,建议你直接使用WebClient来下载文件算了
网上也有很多用HttpWebRequest下载文件的例子,踏踏实实认真研究

参考资料: http://msdn.microsoft.com/zh-cn/library/system.net.webclient.aspx

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lov1Rui
2011-06-11
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式