c# 解压 处理.tar.gz文件

首先
tar是把文件打成一个包,并不压缩;
gz是用gzip把打成包的.tar文件压缩;
过程是
先 在ICSharpCode.SharpZipLib.GZip 中的方法解压为tar文件包,
///
        var targzpath="xxx/xxx/xxx.tar.gz";
        GZipInputStream gzs = new GZipInputStream(targzpath);
FileStream destFile = File.Open("xxx/xxx/xxx", FileMode.Create);


int buffersize = 2048;//缓冲区的尺寸,一般是2048的倍数
byte[] FileData = new byte[buffersize];//创建缓冲数据
while (buffersize > 0)//一直读取到文件末尾
{
buffersize = gzs.Read(FileData, 0, buffersize);//读取压缩文件数据
destFile.Write(FileData, 0, buffersize);//写入目标文件
}
destFile.Close();//关闭目标文件
gzs.Close();






再用 using ICSharpCode.SharpZipLib.Tar; 里方法 还原为文件


/
FileStream fr = new FileStream("xxx/xxx/xxx.tar", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
ICSharpCode.SharpZipLib.Tar.TarInputStream s = new ICSharpCode.SharpZipLib.Tar.TarInputStream(fr);
ICSharpCode.SharpZipLib.Tar.TarEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);


if (directoryName != String.Empty)
Directory.CreateDirectory(strUnpackDir + directoryName);//解压到 文件夹


if (fileName != String.Empty)
{
FileStream streamWriter = File.Create(strUnpackDir + theEntry.Name);


int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
}
s.Close();

fr.Close();

要添加引用:

ICSharpCode.SharpZipLib

自己网上找找-------

-------------------------------------------------------------------

好像这样更简单

using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Tar;


/// <summary>
        /// 文件解压
        /// </summary>
        /// <param name="zipPath">压缩文件路径</param>
        /// <param name="goalFolder">解压到的目录</param>
        /// <returns></returns>
        internal static bool UnzipTgz(string zipPath, string goalFolder)
        {
            Stream inStream = null;
            Stream gzipStream = null;
            TarArchive tarArchive = null;
            try
            {
                using (inStream = File.OpenRead(zipPath))
                {
                    using (gzipStream = new GZipInputStream(inStream))
                    {
                        tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
                        tarArchive.ExtractContents(goalFolder);
                        tarArchive.Close();
                    }
                }


                return true;
            }
            catch (Exception ex)
            {
                LogManager.GetCurrentClassLogger().Error(ex);
                return false;
            }
            finally
            {
                if (null != tarArchive) tarArchive.Close();
                if (null != gzipStream) gzipStream.Close();
                if (null != inStream) inStream.Close();
            }
        }

astyle_2.05.1_linux.tar.gz 是一个用于 Linux 操作系统的压缩文件。它是 astyle 的源代码编译和安装包。astyle 是一个开源的代码格式化工具,可用于许多编程语言,如C、C++、C#等。 这个压缩文件的扩展名 ".tar.gz" 表示它是一个经过压缩的 tar 文件tar 是一种归档文件的格式,用于将多个文件和目录打包成一个单独的文件。而 ".gz" 表示压缩文件使用了 gzip 算法进行压缩。 要使用 astyle_2.05.1_linux.tar.gz,首先需要通过解压缩这个文件来获取其中的内容。在 Linux 系统中,可以使用以下命令解压缩这个文件: ``` tar -zxvf astyle_2.05.1_linux.tar.gz ``` 解压后,会生成一个名为 "astyle" 或者 "astyle_2.05.1_linux" 的目录。进入该目录,其中包含了 astyle 的源代码和相关文件。 接下来,可以根据安装说明文档编译和安装 astyle。通常,需要在终端中执行以下步骤进行编译和安装: 1. 进入 astyle 的目录:`cd astyle` 2. 运行 configure 脚本:`./configure` 3. 执行 make 命令编译源代码:`make` 4. 执行 make install 命令以管理员权限安装 astyle:`sudo make install` 完成上述步骤后,astyle 将被成功编译和安装在系统中。安装后,您可以在终端中运行 `astyle` 命令以使用它来格式化您的代码。 总之,astyle_2.05.1_linux.tar.gz 是 astyle 工具的源代码压缩包。通过解压缩并按照安装说明编译和安装 astyle,可以在 Linux 系统上使用它来格式化编程代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值