示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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;
        }