2016-06-30 3 views
0

Я пытаюсь распаковать tar.gz внутри одной молнии, но я не могуРазархивируйте .tar.gz с SharpZipLib

Он показывает мне ошибку «не удается найти центральный каталог», и я не знаю, что делать.

Сначала я разархивирую ZIP-файл в временной папке, затем выполняю поиск .tar.gz в этой папке и пытаюсь распаковать, но сбой с этой ошибкой, но я могу открыть его с помощью приложения winrar, .tar.gz некоторые папки и некоторые файлы внутри.

Это мой код:

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 и получить файлы изнутри.

+0

родственный: http://stackoverflow.com/questions/24138373/unzip-gz-file-using-c-sharp –

+0

в этом вопросе они только декомпрессию один файл не группа файлов –

+0

Как об этом FastZip: https://github.com/icsharpcode/SharpZipLib/wiki/FastZip –

ответ

0

Наконец я нашел форму.

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 
     } 

Извините и спасибо

0

https://github.com/icsharpcode/SharpZipLib/wiki/FastZip

using System; 
using ICSharpCode.SharpZipLib.Zip; 

public void TestFastZipUnpack(string zipFileName, string targetDir) { 

    FastZip fastZip = new FastZip(); 
    string fileFilter = null; 

    // Will always overwrite if target filenames already exist 
    fastZip.ExtractZip(zipFileName, targetDir, fileFilter); 
} 
+0

К сожалению, это одно и то же –

+0

Как насчет использования непосредственно с Microsoft: https://msdn.microsoft.com/en-us/library/ms404280(v=vs.110).aspx –