首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

HttpWebRequest下载文件有关问题,怎么保存成为二进制文件

2012-06-14 
HttpWebRequest下载文件问题,如何保存成为二进制文件?HttpWebRequest myHttpWebRequest (HttpWebRequest

HttpWebRequest下载文件问题,如何保存成为二进制文件?
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
  // Sends the HttpWebRequest and waits for the response.
  HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
  // Gets the stream associated with the response.
  Stream receiveStream = myHttpWebResponse.GetResponseStream();

  byte[] buffer = new byte[1024];
  int numBytesToRead = (int)myHttpWebResponse.ContentLength;
  int numBytesRead = 0;
  FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\"+url.Substring(url.LastIndexOf("/"), url.Length - url.LastIndexOf("/")), FileMode.Create);
  while (numBytesToRead > 0)
  {
  // Read may return anything from 0 to numBytesToRead.
  int n = receiveStream.Read(buffer, numBytesRead, 1024);
  // The end of the file is reached.
  if (n == 0)
  break;
  fs.Write(buffer, numBytesRead, buffer.Length);
  numBytesRead += n;
  numBytesToRead -= n;
  }
  fs.Flush();
  fs.Close();
  fs.Dispose();
  receiveStream.Close();



ulr 是网站上的一个压缩包。

[解决办法]
while (numBytesToRead > 0) 整块换成下面代码

C# code
int len = 0;while ((len = receiveStream.Read(buffer, 0, buffer.Length)) > 0){    fs.Write(buffer, 0, len);}
[解决办法]
如果只是下载二进制流,使用简单的一句 new WebClient().DownloadData就行了。

热点排行