读写流我把byte数组长度设置成1000或2000时得到的文件总出错

Jarvis-Li 2011-12-28 03:54:55
private string down(string inUrl,string title)
{
//以字符流的形式下载文件

WebRequest objRequest = System.Net.HttpWebRequest.Create(inUrl);
try
{
BufferedStream buff = new BufferedStream(objRequest.GetResponse().GetResponseStream());

byte[] bytes = new byte[1024];//这里如果是1000或2000时有时得到的文件(大小5-6M左右)出错有时不出错

FileStream fs2 = new FileStream(title, FileMode.Create, FileAccess.Write);
BufferedStream bs2 = new BufferedStream(fs2);

while (buff.Read(bytes, 0, bytes.Length) > 0)
{
// buff.Read(bytes, 0, bytes.Length);
int aa = bytes.Length;

bs2.Write(bytes, 0, bytes.Length);
bs2.Flush();
}

buff.Close();
bs2.Close();
fs2.Close();
}
catch
{
title = "123";
}
return title;
}
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jarvis-Li 2011-12-28
  • 打赏
  • 举报
回复
的确这个问题,谢谢了
Jarvis-Li 2011-12-28
  • 打赏
  • 举报
回复
我刚才也发现这个问题,
不知道我得到的文件出错是不是这个原因
我先试下
dntg007 2011-12-28
  • 打赏
  • 举报
回复
int aa = bytes.Length;

bs2.Write(bytes, 0, bytes.Length);

就这两句出错,bytes.Length永远是你上面设定的固定值。而实际并不一定读取恰好等于数组长度的字节数。应该设定个表示实际读取的字节数的变量
int readByteNum;
while ((readByteNum = buff.Read(bytes, 0, bytes.Length)) > 0)
{

bs2.Write(bytes, 0, readByteNum);
bs2.Flush();
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧