/// <summary> /// 解凍する。 /// </summary> /// <returns>展開に成功した。</returns> public override bool Expand() { try { Trace.WriteLine($"{LogHelper.Stamp}Expand : {this.InputFile.FullName} -> {LocationMaster.ExpandedDirectory.FullName}"); if (string.IsNullOrWhiteSpace(this.InputFile.FullName)) { return(false); } SevenZManager.fnExtract(this.InputFile.FullName, LocationMaster.ExpandedDirectory.FullName); // ディレクトリーを浅くします。 PathFlat.GoFlat(LocationMaster.ExpandedDirectory.FullName); // 解凍が終わった元ファイルは削除。 this.InputFile.Delete(); return(true); } catch (BadImageFormatException e) { // 32ビットのプログラムを 64ビットで動かそうとしたときなど。 Trace.WriteLine(e); return(false); } catch (InvalidOperationException e) { Trace.WriteLine(e); return(false); } }
protected virtual void ExtractFile(string temppath, string file, string ext) { ReCreateDir(temppath); if (ext == ".7z" || ext == ".7zip") { SevenZManager.fnExtract(file, temppath); } else { using (Stream stream = File.OpenRead(file)) { //未実装:ファイル名にハイフンが入っていたらリネーム var reader = ReaderFactory.Open(stream); while (reader.MoveToNextEntry()) { if (!reader.Entry.IsDirectory) { reader.WriteEntryToDirectory(temppath , ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite); } } } } }