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

        string t = "";

    //总体下载

        IEnumerator downfile(string urlstring 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(LocalPathFileMode.CreateFileAccess.Write);
            
            long length = wr.ContentLength;
            long i = 0;
            decimal j = 0;
            
            while (i < length)
            {
                byte[] buffer = new byte[1024];
                i += sIn.Read(buffer0buffer.Length);
                fs.Write(buffer0buffer.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(lStartPosSystem.IO.SeekOrigin.Current); //移动文件流中的当前指针 
            }
            else
            {
                fs = new System.IO.FileStream(saveFileSystem.IO.FileMode.Create);
            }
            
            
            if (lStartPos > 0)
            {
                request.AddRange((int)lStartPos); //设置Range值
                print(lStartPos);
            }
            
            //向server请求。获得server回应数据流 
            System.IO.Stream ns = request.GetResponse().GetResponseStream();
            int len = 1024 * 8;
            
            byte[] nbytes = new byte[len];
            int nReadSize = 0;
            nReadSize = ns.Read(nbytes0len);
            while (nReadSize > 0)
            {
                fs.Write(nbytes0nReadSize);
                nReadSize = ns.Read(nbytes0len);
                t = downloadString+" : " + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"+"  ----  "+((double)fs.Length/countLength).ToString()+"%";
              
               
                yield return false;
            }
            ns.Close();
            fs.Close();
          //这里放更新安装代码,或者能够測试这个下载的包有没有出错,验证sha和md5
           
           
        }

  • 相关阅读:
    常见排序算法-----堆排序
    深度优先搜索和广度优先搜索
    剑指offer整理-------二维数组查找
    常见排序算法-----希尔排序
    log4j日志不能输出到文件
    常见排序算法-----直接插入排序
    从零开始学习springBoot(使用thymeleaf和freemarker模板)
    从零开始学习springBoot(Spring Boot使用Druid和监控配置)
    从零开始学习springBoot(定时任务)
    从零开始学习springBoot(默认静态资源和自定义资源映射)
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7026419.html
Copyright © 2011-2022 走看看