コード例 #1
0
        /// <summary>
        /// 解压文件64
        /// </summary>
        private void extractFile64()
        {
            Unrar64 unrar = new Unrar64();

            unrar.Open(ConfigHelp.FileDownPath, Unrar64.OpenMode.List);
            while (unrar.ReadHeader())
            {
                if (!unrar.CurrentFile.IsDirectory && unrar.CurrentFile.PackedSize != 0 && unrar.CurrentFile.UnpackedSize != 0)
                {
                    fileCount++;
                }
                unrar.Skip();
            }
            unrar.Close();
            logger.Info("extractFile64 - start - fileCount=" + this.fileCount + ", FileDownPath=" + ConfigHelp.FileDownPath);

            unrar.Open(ConfigHelp.FileDownPath, Unrar64.OpenMode.Extract);
            unrar.DestinationPath     = ConfigHelp.FileUpdatePath;
            unrar.ExtractionProgress += (new ExtractionProgressHandler(unrar_ExtractionProgress));
            unrar.MissingVolume      += (new MissingVolumeHandler(unrar_MissingVolume));
            unrar.PasswordRequired   += (new PasswordRequiredHandler(unrar_PasswordRequired));
            while (unrar.ReadHeader())
            {
                unrar.Extract();
            }
            unrar.Close();
        }
コード例 #2
0
        public static CFolder GetFolder(string FileName)
        {
            if (FileName.Substring(FileName.Length - 4, 4).ToLower() != ".rar")
            {
                throw new Exception("File type did not match this Plugins!");
            }

            char[]   sp         = { '\\' };
            string[] TempStrs   = FileName.Split(sp);
            CFolder  TempFolder = new CFolder();

            if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + " (x86)"))
            {
                Unrar64 rar = new Unrar64(FileName);
                rar.Open(Unrar64.OpenMode.List);

                TempFolder.Name = TempStrs[TempStrs.Length - 1];
                Array.Clear(TempStrs, 0, TempStrs.Length);

                while (rar.ReadHeader())
                {
                    //if (!rar.CurrentFile.IsDirectory)
                    //{
                    TempStrs = rar.CurrentFile.FileName.Split(sp);
                    FillFolder(FileName, TempStrs, 0, TempFolder, rar.CurrentFile);
                    //}
                    rar.Skip();
                }

                rar.Close();
                rar = null;
            }
            else
            {
                Unrar rar = new Unrar(FileName);
                rar.Open(Unrar.OpenMode.List);

                TempFolder.Name = TempStrs[TempStrs.Length - 1];
                Array.Clear(TempStrs, 0, TempStrs.Length);

                while (rar.ReadHeader())
                {
                    //if (!rar.CurrentFile.IsDirectory)
                    //{
                    TempStrs = rar.CurrentFile.FileName.Split(sp);
                    FillFolder(FileName, TempStrs, 0, TempFolder, rar.CurrentFile);
                    //}
                    rar.Skip();
                }

                rar.Close();
                rar = null;
            }

            TempFolder.SpecialItem = true;
            TempFolder.CreatedTime = (new FileInfo(FileName)).CreationTimeUtc;

            return(TempFolder);
        }