/// <summary> /// 解凍する。 /// </summary> /// <returns>展開に成功した。</returns> public override bool Expand() { Trace.WriteLine($"{LogHelper.Stamp}Expand : {this.InputFile.FullName} -> {LocationMaster.ExpandedDirectory.FullName}"); if (string.IsNullOrWhiteSpace(this.InputFile.FullName)) { return(false); } using (var inStream = File.OpenRead(this.InputFile.FullName)) { using (var gzipStream = new GZipInputStream(inStream)) { using (var tarArchive = TarArchive.CreateInputTarArchive(gzipStream)) { tarArchive.ExtractContents(LocationMaster.ExpandedDirectory.FullName); } } } // ディレクトリーを浅くします。 PathFlat.GoFlat(LocationMaster.ExpandedDirectory.FullName); // 解凍が終わった元ファイルは削除。 this.InputFile.Delete(); return(true); }
/// <summary> /// 解凍する。 /// </summary> /// <returns>展開に成功した。</returns> public override bool Expand() { Trace.WriteLine($"{LogHelper.Stamp}Expand : {this.InputFile.FullName} -> {LocationMaster.ExpandedDirectory.FullName}"); /* * // 既存なら削除。 * var file = new TraceableFile(LocationMaster.ExpandedDirectory.FullName); * file.Delete(); */ ZipFile.ExtractToDirectory(this.InputFile.FullName, LocationMaster.ExpandedDirectory.FullName); // ディレクトリーを浅くします。 PathFlat.GoFlat(LocationMaster.ExpandedDirectory.FullName); // 解凍が終わった元ファイルは削除。 this.InputFile.Delete(); // 解凍したとき作ったディレクトリーが残ってしまう。ディレクトリーは消す。 { IEnumerable <string> restDirectories = System.IO.Directory.EnumerateDirectories( LocationMaster.ExpandedDirectory.FullName, "*", System.IO.SearchOption.TopDirectoryOnly); foreach (var restDir in restDirectories) { new TraceableDirectory(restDir).Delete(true); } } return(true); }
/// <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); } }
/// <summary> /// 解凍する。 /// </summary> /// <returns>展開に成功した。</returns> public override bool Expand() { Trace.WriteLine($"{LogHelper.Stamp}Expand : {this.InputFile.FullName} -> None."); if (string.IsNullOrWhiteSpace(this.InputFile.FullName)) { return(false); } // ディレクトリーを浅くします。 PathFlat.GoFlat(LocationMaster.ExpandedDirectory.FullName); // 無理だった元ファイルは削除。 this.InputFile.Delete(); return(true); }
/// <summary> /// 解凍する。 /// </summary> /// <returns>展開に成功した。</returns> public override bool Expand() { Trace.WriteLine($"{LogHelper.Stamp}Expand : {this.InputFile.FullName} -> {LocationMaster.ExpandedDirectory.FullName}"); if (string.IsNullOrWhiteSpace(this.InputFile.FullName)) { return false; } LzhManager.fnExtract(this.InputFile.FullName, LocationMaster.ExpandedDirectory.FullName); // ディレクトリーを浅くします。 PathFlat.GoFlat(LocationMaster.ExpandedDirectory.FullName); // 解凍が終わった元ファイルは削除。 this.InputFile.Delete(); return true; }