首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SharpZipLib解压.tar.gz

用SharpZipLib解压.tar.gz
EN

Stack Overflow用户
提问于 2016-06-30 18:36:15
回答 4查看 9.1K关注 0票数 3

我正试着在一个拉链里面解压一个tar.gz,但是我不能

它显示了一个错误“找不到中央目录”,我不知道该怎么做。

首先我解压一个临时文件夹中的压缩文件,然后在该文件夹中搜索.tar.gz,然后尝试解压,但由于出现错误而崩溃,但我可以使用winrar应用程序打开它,.tar.gz中有一些文件夹和一些文件。

这是我的代码:

代码语言:javascript
运行
复制
var trash = Path.Combine(_temporalPath, "Trash");
        try
        {
            var zip = new FastZip();
            Directory.CreateDirectory(trash);
            zip.ExtractZip(_origin, trash, "");
            var gzip = Directory.GetFiles(trash, "*.tar.gz")[0];
            zip.ExtractZip(gzip, trash, FastZip.Overwrite.Always.ToString());
            File.Delete(gzip);
        }
        catch (Exception)
        {
            //IGNORE
        }

我搜索信息,但我只找到一个解压缩文件。enter image description here

我需要的是打开tar.gz并从里面拿到文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-06-30 21:27:44

最后我找到了表格。

代码语言:javascript
运行
复制
var trash = Path.Combine(_temporalPath, "Trash");
        try
        {
            var zip = new ICSharpCode.SharpZipLib.Zip.FastZip();
            Directory.CreateDirectory(trash);
            zip.ExtractZip(_origin, trash, null);
            var gzip = Directory.GetFiles(trash, "*.gz")[0];
            UnGzFile(gzip, Path.Combine(trash, Path.GetFileNameWithoutExtension(gzip)));
            File.Delete(gzip);
            var tar = Directory.GetFiles(trash, "*.tar")[0];
            var stream = File.OpenRead(tar);
            var tarArchive = ICSharpCode.SharpZipLib.Tar.TarArchive.CreateInputTarArchive(stream);
            tarArchive.ExtractContents(trash);
            tarArchive.Close();
            stream.Close();
            File.Delete(tar);
        }
        catch (Exception ex)
        {
            //IGNORE
        }

对不起,谢谢

票数 1
EN

Stack Overflow用户

发布于 2018-09-06 16:42:51

使用SharpZipLib

代码语言:javascript
运行
复制
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Tar;

public void ExtractTGZ(String gzArchiveName, String destFolder)
{
    Stream inStream = File.OpenRead(gzArchiveName);
    Stream gzipStream = new GZipInputStream(inStream);

    TarArchive tarArchive = TarArchive.CreateInputTarArchive(gzipStream);
    tarArchive.ExtractContents(destFolder);
    tarArchive.Close();

    gzipStream.Close();
    inStream.Close();
}
票数 4
EN

Stack Overflow用户

发布于 2018-07-15 18:20:58

您可以简单地使用ZipFile类来完成此操作:

代码语言:javascript
运行
复制
File.Move(source, Path.ChangeExtension(source, ".zip"));
ZipFile.ExtractToDirectory(Path.ChangeExtension(source, ".zip"), destination);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38120651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档