示例#1
0
        public void loadOneUpdateFile(string path, FileVerInfo fileInfo)
        {
            //string loadPath = UtilApi.combineVerPath(path, fileInfo.m_fileMd5);
            //m_loadingPath.Add(loadPath);
            m_loadingPath.Add(UtilLogic.webFullPath(path));
            if (Ctx.m_instance.m_versionSys.m_localVer.m_path2HashDic.ContainsKey(path))
            {
                UtilApi.delFile(Path.Combine(Ctx.m_instance.m_localFileSys.getLocalWriteDir(), UtilLogic.combineVerPath(path, Ctx.m_instance.m_versionSys.m_localVer.m_path2HashDic[path].m_fileMd5)));     // 删除当前目录下已经有的 old 文件
            }
            //UtilApi.delFileNoVer(path);     // 删除当前目录下已经有的 old 文件

            LoadParam param = Ctx.m_instance.m_poolSys.newObject <LoadParam>();

            param.m_path = path;

            param.m_resLoadType = ResLoadType.eLoadWeb;
            param.m_version     = fileInfo.m_fileMd5;

            param.m_loadEventHandle = onLoadEventHandle;

            Ctx.m_instance.m_resLoadMgr.loadData(param);
            Ctx.m_instance.m_poolSys.deleteObj(param);
        }
示例#2
0
        // 协程下载
        protected IEnumerator coroutWebDown()
        {
            string uri      = UtilLogic.webFullPath(m_path);
            string saveFile = Path.Combine(Ctx.m_instance.m_localFileSys.getLocalWriteDir(), m_path);

            //try
            {
                //打开网络连接
                HttpWebRequest  request       = (HttpWebRequest)HttpWebRequest.Create(uri);
                HttpWebResponse response      = (HttpWebResponse)request.GetResponse();
                long            contentLength = response.ContentLength;
                long            readedLength  = 0;

                long       lStartPos = 0;
                FileStream fileStream;
                if (File.Exists(saveFile))
                {
                    fileStream = System.IO.File.OpenWrite(saveFile);
                    lStartPos  = fileStream.Length;
                    if (contentLength - lStartPos <= 0)     // 文件已经完成
                    {
                        fileStream.Close();
                        yield break;
                    }
                    fileStream.Seek(lStartPos, SeekOrigin.Current); //移动文件流中的当前指针
                }
                else
                {
                    fileStream = new FileStream(saveFile, System.IO.FileMode.Create);
                }

                if (lStartPos > 0)
                {
                    request.AddRange((int)lStartPos); //设置Range值
                    contentLength -= lStartPos;
                }

                //向服务器请求,获得服务器回应数据流
                System.IO.Stream retStream = response.GetResponseStream();
                int len = 1024 * 8;
                m_bytes = new byte[len];
                int    nReadSize = 0;
                string logStr;
                while (readedLength != contentLength)
                {
                    nReadSize = retStream.Read(m_bytes, 0, len);
                    fileStream.Write(m_bytes, 0, nReadSize);
                    readedLength += nReadSize;
                    logStr        = "已下载:" + fileStream.Length / 1024 + "kb /" + contentLength / 1024 + "kb";
                    Ctx.m_instance.m_logSys.log(logStr);
                    yield return(false);
                }
                retStream.Close();
                fileStream.Close();
                if (readedLength == contentLength)
                {
                    nonRefCountResLoadResultNotify.resLoadState.setSuccessLoaded();
                }
                else
                {
                    nonRefCountResLoadResultNotify.resLoadState.setFailed();
                }
                nonRefCountResLoadResultNotify.loadResEventDispatch.dispatchEvent(this);
            }
            //catch (Exception)
            //{
            //    if (onFailed != null)
            //    {
            //        onFailed(this);
            //    }
            //}
        }