2016-06-30 16 views
0

Ich versuche, ein tar.gz innerhalb einer Zip zu entpacken, aber ich kann nichtDekomprimieren .tar.gz mit SharpZipLib

Es zeigt mir einen Fehler „nicht zentrales Verzeichnis“ und ich weiß nicht, was machen.

Zuerst entzippe ich die Zip in einem temporären Ordner, dann suche nach einem .tar.gz in diesem Ordner und versuche, den Fehler zu beheben, aber ich kann es mit winrar Anwendung öffnen, die .tar.gz haben einige Ordner und einige Dateien darin.

Dies ist mein Code:

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 
     } 

ich Informationen suchen, aber ich nur für unzip einer Datei finden. enter image description here

Was ich brauche, ist das Tar.gz zu öffnen und die Dateien von innen zu bekommen.

+0

verwandten: http://stackoverflow.com/questions/24138373/unzip-gz-file-using-c-sharp –

+0

in dieser Frage Dekomprimieren sie nur eine Datei nicht eine Gruppe von Dateien –

+0

Wie wäre es mit diesem FastZip: https://github.com/icsharpcode/SharpZipLib/wiki/FastZip –

Antwort

0

Schließlich fand ich das Formular aus.

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 
     } 

Leider und Dank

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

Leider passiert das gleiche –

+0

Wie über die Verwendung direkt von Microsoft: https://msdn.microsoft.com/en-us/library/ms404280(v=vs.110).aspx –