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

  • 相关阅读:
    ASP.NET Web API 框架研究 Self Host模式下的消息处理管道
    ASP.NET Web API 框架研究 Web Host模式下的消息处理管道
    ASP.NET Web API 框架研究 核心的消息处理管道
    ASP.NET Web API 框架研究 Web Host模式路由及将请求转出到消息处理管道
    ASP.NET Web API 框架研究 ASP.NET Web API 路由
    ASP.NET Web API 框架研究 ASP.NET 路由
    ASP.NET Web API 入门 (API接口、寄宿方式、HttpClient调用)
    MVVM模式
    RESTful Web API 理解
    C# 函数式编程及Monads.net库
  • 原文地址:https://www.cnblogs.com/123ing/p/4130037.html
Copyright © 2011-2022 走看看