/// <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(); }
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); }