J.C*_*met 4 c# gzip tar sharpziplib
我正在尝试将 tar.gz 解压缩到一个 zip 中,但我不能
\n\n它向我显示错误 \xe2\x80\x9ccannot findcentraldirectory\xe2\x80\x9d 并且我不\xe2\x80\x99t 不知道该怎么做。
\n\n首先,我将 zip 解压到临时文件夹上,然后在该文件夹上搜索 .tar.gz 并尝试解压,但因该错误而崩溃,但我可以使用 winrar 应用程序打开它,.tar.gz 有一些文件夹和一些里面的文件。
\n\n这是我的代码:
\n\nvar trash = Path.Combine(_temporalPath, "Trash");\n try\n {\n var zip = new FastZip();\n Directory.CreateDirectory(trash);\n zip.ExtractZip(_origin, trash, "");\n var gzip = Directory.GetFiles(trash, "*.tar.gz")[0];\n zip.ExtractZip(gzip, trash, FastZip.Overwrite.Always.ToString());\n File.Delete(gzip);\n }\n catch (Exception)\n {\n //IGNORE\n }\nRun Code Online (Sandbox Code Playgroud)\n\n我搜索信息,但只找到解压一个文件。\n在此处输入图像描述
\n\n我需要的是打开 tar.gz 并从里面获取文件。
\n使用SharpZipLib:
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();
}
Run Code Online (Sandbox Code Playgroud)