2009-08-11 5 views
0

Wir benötigen eine Cross-Plattform-Lösung zum Komprimieren von Dateien. Unser Server läuft unter Windows XP/Vista/7 und 3 Unix-Distributionen, SunOS, HPUX und AIX. Unser Server erstellt Dateien, die gezippt werden müssen, bevor sie auf den Client zurückgesetzt werden. Unser erster Gedanke war, die Dateien mit jar zu komprimieren, da die meisten Server Java installiert haben, aber offensichtlich ist jar nicht im jre enthalten, nur jdk. Unser Server ist in C geschrieben und die Anwendung, die eine komprimierte Datei erstellen muss, ist Perl.Cross-Plattform-Dateikomprimierung

Ich würde wirklich wie etwas, das ich nicht als unsere installieren Installationsbasis ist groß und das Hinzufügen neue erforderliche Anwendungen ist in der Regel schwierig. Gibt es etwas, das garantiert in jedes dieser Betriebssysteme eingebaut wird, das ich zum Zippen verwenden könnte? Auch wenn ich für jeden etwas anderes verwenden muss, wäre das wohl auch okay.

+0

BTW, Glas tatsächlich Zip ist, so alles, was Sie tun müssen, ist das Glas als zip umbenennen, und dann kannst du es dekomprimieren. – Milhous

+0

Wenn das "Java" -Tag korrekt ist, können Sie Java 1.4 http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/GZIPOutputStream.html (und GZIPInputStream) verwenden. –

Antwort

7

Wenn Sie nichts installieren möchten, sind Sie ziemlich SOL. Windows macht das nicht einfach.

Wenn Sie etwas zu schreiben, sich java.util.zip in der Java 2 Standard Edition (J2SE) und Perl hat Archive::Zip

+0

SOL erwies sich als die richtige Antwort. Unsere Installationsbasis ist so lächerlich vielfältig, dass es buchstäblich nichts gibt, was all unsere Kunden haben. Es sieht so aus, als würden wir jar für die neueren Versionen unserer Software verwenden (da wir die jdk benötigen), während ältere Versionen eine gebündelte Zip-Anwendung haben werden. Danke für die Rückmeldung. – Morinar

+1

Nur um es etwas weiter zu bringen, merkt man, dass JAR-Dateien * ARE * ZIP-Dateien sind, oder? Das würde dir etwas Vorwärtskompatibilität ermöglichen. –

1

Sie immer in Erwägung ziehen könnte ein Open-Source-Kompressionswerkzeug zu verteilen oder sogar eine Kompression SDK als Teil Ihrer App wie 7 ZIP's

1

mit dem Wenn Sie Java (egal JRE oder JDK) installiert hat, können Sie die pack200 verwenden und unpack200 zum Erstellen und Entpacken der Archive. Pack200 verwendet Gzip-Komprimierung, die ziemlich Standard ist.

sollten Sie beachten, dass pack200 nicht mehr Dateien in einem Archiv (Art der gzip) komprimieren läßt. Wenn es erforderlich ist, können Sie Ihr eigenes Tool in reinem Java implementieren, das Zip-Dateien erstellt und überall mit der einheitlichen Befehlszeilenschnittstelle ausgeführt werden kann (Java verfügt über eine integrierte Zip-Unterstützung, siehe some samples).

Wenn Sie diesen Weg gehen, können Sie auch die native bz2 oder 7-Zip-Java-Implementierung von Formaten verwenden, um eine bessere Kompression zu bekommen.

+0

Das sieht aus wie ein Gewinner auf der Windows-Maschine, aber ich kann es nicht auf einer der Unix-Boxen finden. Wäre es an einem nicht standardmäßigen Ort oder etwas? – Morinar

+0

pack200 ist im Sun JDK im Ordner JDK_HOME/bin auf der Linux-Plattform verfügbar. Wenn Sie GCJ auf den Servern installiert haben, haben Sie kein Glück und müssen Ihre kleine Anwendung in Java implementieren, um Archive zu erstellen. – CrazyCoder

4

Ich mag eine Menge 7-zip, aber für Situationen wie die Ihre Ich gehe immer zu kleinsten gemeinsamen denominataor: ZIP. Einfaches altes ZIP. Die meisten Unices und Linux haben zip und unzip. Und für Windows gibt es viele Optionen, einschließlich 7-zip, die ZIP-Dateien manipulieren können. Und wahrscheinlich haben die Kunden einen Zip-Client installiert.