public void UnZip(object _zipFileArgs) { ZipFileArgs zipFileArgs = (ZipFileArgs)_zipFileArgs; string zipFile = zipFileArgs.zipFile; this.dataPath = zipFileArgs.TarDir; bool overWrite = zipFileArgs.OverWrite; this.UnZipFinish = zipFileArgs.unZipFinish; this.FilterDir = zipFileArgs.FilterDir; if (string.IsNullOrEmpty(zipFile)) { Debug.LogError("ZipFileName is null: " + zipFile); return; } if (!File.Exists(zipFile)) { Debug.LogError("Cannot find file:" + zipFile); return; } this.zipFileName = zipFile; this.fileSize = new FileInfo(zipFile).get_Length(); Debug.Log(string.Concat(new object[] { "UnZip File: ", zipFile, " fileSize:", this.fileSize })); this.WaitUnZipFiles = 0; this.nowUnZipFile = 0; this.finishThreadNum = 0; this.unzipFileCount = 0; using (ZipInputStream zipInputStream = new ZipInputStream(File.OpenRead(this.zipFileName))) { ZipEntry nextEntry; while ((nextEntry = zipInputStream.GetNextEntry()) != null) { this.WaitUnZipFiles++; string text = Path.GetDirectoryName(nextEntry.get_Name()); string relPath = this.GetRelPath(text); if (!string.IsNullOrEmpty(relPath)) { text = Path.Combine(this.dataPath, relPath); DirectoryUtil.CreateIfNotExist(text); } } } Debug.Log("ThreadNum:" + this.ThreadNum); for (int i = 1; i <= this.ThreadNum; i++) { ThreadPool.QueueUserWorkItem(new WaitCallback(this.UnZipNextFile)); } }
private void CheckUnZipFile(Action _FinishCallBack) { this.UnZipFinish = _FinishCallBack; if (PlayerPrefs.HasKey("FinishedUpdateBaseId")) { this.finishNum = PlayerPrefs.GetInt("FinishedUpdateBaseId", -1); if (this.finishNum >= 0) { ZipFileArgs zipFileArgs = new ZipFileArgs(); zipFileArgs.OverWrite = true; zipFileArgs.TarDir = Util.DataPath; zipFileArgs.unZipFinish = new Action(this.UnZipFileFinish); zipFileArgs.zipFile = this.dataPath + "base" + this.finishNum.ToString() + ".zip"; UnZipFile.Instance.ThreadNum = Environment.get_ProcessorCount() * 2; UnZipFile.Instance.UnZip(zipFileArgs); } else if (PlayerPrefs.HasKey("FinishedUpdatePatchId")) { this.finishNum = PlayerPrefs.GetInt("FinishedUpdatePatchId", -1); if (this.finishNum >= 0) { ZipFileArgs zipFileArgs2 = new ZipFileArgs(); zipFileArgs2.OverWrite = true; zipFileArgs2.TarDir = Util.DataPath; zipFileArgs2.unZipFinish = new Action(this.UnZipFileFinish); zipFileArgs2.zipFile = this.dataPath + "patch" + this.finishNum.ToString() + ".zip"; UnZipFile.Instance.ThreadNum = Environment.get_ProcessorCount() * 2; UnZipFile.Instance.UnZip(zipFileArgs2); } else { this.UnZipFinish.Invoke(); } } else { this.UnZipFinish.Invoke(); } } else { this.UnZipFinish.Invoke(); } }
private void UnzipPatch(UpdateManager.DownloadFileInfo info) { Debug.LogFormat("解压文件 :{0}", new object[] { info.LocalPath }); UnZipFile.Instance.ThreadNum = Environment.get_ProcessorCount() * 2; Loom.Current.RunAsync(delegate { this.InstallUpdate = new Action(this.UnZipUpdate); ZipFileArgs zipFileArgs = new ZipFileArgs(); zipFileArgs.OverWrite = true; zipFileArgs.TarDir = PathSystem.PersistentDataPath; zipFileArgs.unZipFinish = delegate { this.UnZipFileFinish(info); }; zipFileArgs.zipFile = info.LocalPath; zipFileArgs.FilterDir = new List <string>(); zipFileArgs.FilterDir.Add("assets/"); UnZipFile.Instance.UnZip(zipFileArgs); }); }