转自:http://blog.csdn.net/yutyliu/article/details/24346459
string t = "";
//整体下载
IEnumerator downfile(string url, string LocalPath,UILabel DesLable)
{ Uri u = new Uri(url); HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u); mRequest.Method = "GET"; mRequest.ContentType = "application/x-www-form-urlencoded"; HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse(); Stream sIn = wr.GetResponseStream(); FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write); long length = wr.ContentLength; long i = 0; decimal j = 0; while (i < length) { byte[] buffer = new byte[1024]; i += sIn.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, buffer.Length); if ((i % 1024) == 0) { j = Math.Round(Convert.ToDecimal((Convert.ToDouble(i) / Convert.ToDouble(length)) * 100), 4); t= "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节 下载进度" + j.ToString() + "%"; DesLable.text=t.ToString(); } else { t = "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节"; DesLable.text=t.ToString(); } yield return false; } sIn.Close(); wr.Close(); fs.Close();}
string downloadString="已经下载";
//断点下载
IEnumerator FPointDown(string uri,string saveFile,UILabel DesLable,UISprite LoadSprite) { //打开网络连接 System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri); System.Net.HttpWebRequest requestGetCount = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri); long countLength = requestGetCount.GetResponse().ContentLength; //打开上次下载的文件或新建文件 long lStartPos = 0; System.IO.FileStream fs; if (System.IO.File.Exists(saveFile)) { fs = System.IO.File.OpenWrite(saveFile); lStartPos = fs.Length; if (countLength - lStartPos <= 0) { fs.Close(); t = "已经"; DesLable.text=t.ToString(); yield break; } fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针 } else { fs = new System.IO.FileStream(saveFile, System.IO.FileMode.Create); } if (lStartPos > 0) { request.AddRange((int)lStartPos); //设置Range值 print(lStartPos); } //向服务器请求,获得服务器回应数据流 System.IO.Stream ns = request.GetResponse().GetResponseStream(); int len = 1024 * 8; byte[] nbytes = new byte[len]; int nReadSize = 0; nReadSize = ns.Read(nbytes, 0, len); while (nReadSize > 0) { fs.Write(nbytes, 0, nReadSize); nReadSize = ns.Read(nbytes, 0, len); t = downloadString+" : " + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"+" ---- "+((double)fs.Length/countLength).ToString()+"%"; yield return false; } ns.Close(); fs.Close(); //这里放更新安装代码,或者可以测试这个下载的包有没有出错,验证sha和md5