Пример #1
0
    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));
        }
    }
Пример #2
0
 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();
     }
 }
Пример #3
0
 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);
     });
 }