Frage

Ich versuche, eine Zip-Datei von .NET zu erstellen, die von Java-Code gelesen werden können.

Ich habe SharpZipLib verwendet, um die Zip-Datei zu erstellen, sondern auch, wenn die Datei gültig erzeugt wird, gemäß der CheckZip Funktion der #ZipLib Bibliothek und kann über WinZip oder WinRar erfolgreich dekomprimiert werden ich immer einen Fehler, wenn sie versuchen, es zu dekomprimieren mit der Java.Utils.Zip Klasse in Java.

Problem in dem falschen Kopf von SharpZipLib geschrieben zu sein scheint, habe ich gepostet auch eine Frage auf dem SharpDevelop Forum, aber ohne Ergebnisse (siehe http://community.sharpdevelop.net/forums/t/8272.aspx für weitere Informationen), aber ohne Ergebnis.

Hat jemand ein Codebeispiel eine Zip-Datei mit .Net und Dekomprimieren der Komprimierung mit der Java.Utils.Zip Klasse?

Viele Grüße Massimo

War es hilfreich?

Lösung

Ich habe verwendet DotNetZip Bibliothek und es scheint, richtig zu arbeiten. Typischer Code:

using (ZipFile zipFile = new ZipFile())
{
  zipFile.AddDirectory(sourceFolderPath);
  zipFile.Save(archiveFolderName);
}

Andere Tipps

Ich hatte das gleiche Problem mit Reißverschluss SharpZipLib (neueste Version) und Extraktion mit java.utils.zip zu schaffen.

Hier ist, was das Problem für mich fixiert. Ich hatte den Ausschluß der zip64 Nutzung zu erzwingen:

ZipOutputStream s = new ZipOutputStream(File.Create(someZipFileName))

s.UseZip64 = UseZip64.Off;

Kann nicht mit SharpZipLib helfen, aber man kann versuchen, Zip-Datei mit ZipPackage Klasse -System .IO.Packaging ohne 3. Teil-Bibliotheken (benötigt .NET 3 +).

Sie wollen nicht die ZipPackage Klasse in .NET verwenden - es ist nicht ganz ein Standard-ZIP-Modell. Nun, es ist, aber es setzt eine besondere Struktur in der Datei mit einem Manifest mit einem bekannten Namen, und so weiter. ZipPackage scheint wurden für Office-Dokumente und XPS-Dokumente optimiert.

Ein Drittanbieter-Bibliothek, wie http://www.codeplex.com/DotNetZip , ist wahrscheinlich eine bessere Wahl, wenn Sie Allzweck- ZIP-Dateien und wollen gute Interoperabilität tun.

DotNetZip baut Dateien, die mit so ziemlich alles sehr kompatibel sind, einschließlich Java java.utils.zip. Aber seien Sie vorsichtig mit Funktionen, die Java nicht, wie ZIP64 oder Unicode unterstützen. ZIP64 nützlich ist nur für sehr große Archive, die Java nicht gut in dieser Zeit nicht unterstützt, glaube ich. Java unterstützt Unicode in einer bestimmten Art und Weise, so dass, wenn Sie eine Unicode-basierte ZIP-Datei mit DotNetZip produzieren, müssen Sie nur ein paar Regeln folgen müssen, und es wird funktionieren.

Um zu beurteilen, ob es wirklich eine konforme ZIP-Datei finden Sie PKZIP .ZIP File Format Specification .

Für das, was es wert ist, ich habe keine Probleme habe SharpZipLib mit ZIPs auf einem Windows Mobile-Gerät zu erstellen und öffnen Sie sie mit WinZip oder Windows XP eingebauten in komprimiertem Ordner-Funktion und auch keine Probleme produzieren ZIPs auf dem Desktop mit SharpZipLib und Verarbeitung sie mit meinem eigenen ZIP-Extraktionsdienstprogramm (im Grunde ein Wrapper um zlib) auf dem mobilen Gerät.

Ich hatte ein ähnliches Problem mit dem Entpacken SharpZipLib-ZIP-Dateien unter Linux. Ich glaube, ich löste es (auch ich läuft auf Linux und Mac jetzt, ich habe es getestet), überprüfen Sie mein Blog-Post out: http://igorbrejc.net/development/c/sharpziplib-making-it-work-for-linuxmac

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