zoukankan      html  css  js  c++  java
  • unity3d 关于断点下载和整个下载(用于更新)

    转自: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

  • 相关阅读:
    eclipse
    7lession-基础数据使用介绍
    6lession-基本数据类型
    监听复选框
    arttemplate02
    最后判断权重总分
    ajax
    屏幕尺寸发生变化时页面自适应
    js获取url中的中文参数出现乱码
    js 为什么计算结果老是出现NaN
  • 原文地址:https://www.cnblogs.com/123ing/p/4130037.html
Copyright © 2011-2022 走看看