博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity3d 关于断点下载和整个下载(用于更新)
阅读量:4497 次
发布时间:2019-06-08

本文共 2547 字,大约阅读时间需要 8 分钟。

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

转载于:https://www.cnblogs.com/123ing/p/4130037.html

你可能感兴趣的文章
Angular之constructor和ngOnInit差异及适用场景(转)
查看>>
Extjs4实现客户端搜索(过滤数据)
查看>>
学习TF:《TensorFlow技术解析与实战》PDF+代码
查看>>
3.4 变量
查看>>
[转]Timer和TimerTask
查看>>
MAC下Android的Eclipse开发环境的搭建
查看>>
svn安装
查看>>
CF 914 D. Bash and a Tough Math Puzzle
查看>>
802.11网络协议细节(二)
查看>>
进击的Objective-C------------内存
查看>>
c++约瑟夫环问题
查看>>
EasyPlayer RTSP安卓Android播放器架构简析
查看>>
windows上使用clang编译程序
查看>>
Entity Framework泛型封装
查看>>
flask开发restful api系列(6)-配置文件
查看>>
Greasemonkey之去除百度搜索结果中的推广内容
查看>>
动态库与静态库的区别
查看>>
java 编译
查看>>
Linux权限操作相关
查看>>
菜单 (PS:摘自MSDN)
查看>>