Frage

Ich erhalte eine TGZ-Datei, die eine einfache Textdatei zusammen mit möglicherweise einer oder mehr verschachtelten TGZ-Dateien enthalten. Ich habe herausgefunden, wie die Haupt TGZ-Datei entpacken und die Klartextdatei enthielt darin lesen, aber ich habe nicht herausfinden konnte, wie zu erkennen und zu dekomprimieren die verschachtelten TGZ-Dateien. Hat über dieses Problem jemand kommen vor?

Auch ich habe keine Kontrolle über die Datei erhalte ich, so dass ich nicht das Format einer Datei TGZ TGZ-Dateien mit verschachtelten ändern kann. Ein weiterer Nachteil (obwohl ich glaube nicht, es darauf ankommt) ist, dass diese Dateien komprimiert werden und in einer Unix oder Linux-Umgebung geteert.

Vielen Dank im Voraus für jede Hilfe.

War es hilfreich?

Lösung

Versuchen Sie, die SharpZipLib ( http://www.icsharpcode.net/OpenSource/SharpZipLib/ Download.aspx ) freie Bibliothek.

Damit können Sie die Arbeit mit TGZ und verfügt über Methoden zu Testdateien, bevor Sie versuchen, sie aufzublasen; so dass Sie entweder auf den Dateierweiterungen verlassen können sie einzeln zu korrigieren oder Test sein, um zu sehen, wenn man sich als komprimierte Dateien lesen kann -. sie dann aufblasen, wenn die Haupt-Datei dekomprimiert wurde

Andere Tipps

Lesen und Schreiben TAR und TGZ (oder tar.gz-Dateien) von .NET können Sie diese ein-Datei tar-Klasse verwenden:

http://cheesoexamples.codeplex.com/SourceControl/changeset/view / 97756 # 1868643

Sehr einfache Bedienung. Um ein Archiv zu erstellen:

string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tar", filenames);

Erstellen Sie ein komprimiertes (gzip) tar-Archiv:

string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tgz", filenames, TarOptions.Compress);

ein tar-Archiv lesen:

var entries = Ionic.Tar.List("archive.tar");  // also handles .tgz files

Extrahieren Sie alle Einträge in einem tar-Archiv:

var entries = Ionic.Tar.Extract("archive.tar");  // also handles .tgz files

Hier finden Sie aktuelle DotNetZip auf CodePlex.

  

"Wenn alles, was Sie wollen, ist ein besseres   DeflateStream oder GZipStream Klasse   Ersetzen der, der die in-gebaut   .NET BCL, dass auch hier ist.   DotNetZip des DeflateStream und   GZipStream ist in einem verfügbar   Einzelaufstellung, basierend auf einer .NET   Hafen von Zlib. Diese Ströme unterstützen   Komprimierungsstufen und liefern viel   eine bessere Leistung, dass die eingebaute in   Klassen. Es gibt auch eine ZlibStream zu   vervollständigen das Set (RFC 1950, 1951,   1952). "

Es scheint, dass Sie durch die komprimierte Datei und ziehen Sie die einzelnen Dateien aus dem Archiv laufen können. Anschließend können Sie die Dateien testen Sie unkomprimiert und sehen, ob einer von ihnen selbst gzip-Dateien.

Hier ist ein snippit von ihren Beispielen Seite

using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
  foreach (ZipEntry e in zip)
  {
    e.Extract(OutputStream);
  }
}

Keith

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top