2009-08-11 80 views
0

我們需要一個用於壓縮文件的跨平臺解決方案。我們的服務器運行在Windows XP/Vista/7和3個Unix發行版,SunOS,HPUX和AIX上。我們的服務器創建需要壓縮的文件,然後再將其重新設置回客戶端。我們最初的想法是用jar壓縮文件,因爲大多數服務器都安裝了java,但顯然jar並不包含在jre中,只是jdk。我們的服務器是用C編寫的,需要創建壓縮文件的應用程序是Perl。跨平臺文件壓縮

我真的很喜歡我沒有安裝的東西,因爲我們的安裝基礎很大,添加新的所需應用程序通常很困難。是否有任何內容可以保證可以用於每個可用於壓縮的操作系統?即使我不得不爲每個人使用不同的東西,那也可能是好的。

+0

BTW,罐子實際上是壓縮,因此,所有你需要做的就是重新命名的jar爲ZIP,然後你可以解壓縮它。 – Milhous 2009-08-11 23:27:06

+0

如果「java」標記正確,則可以使用Java 1.4 http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/GZIPOutputStream.html(和GZIPInputStream)。 – 2009-08-12 02:36:43

回答

7

如果你不想安裝任何東西,你幾乎是SOL。 Windows並沒有讓這個簡單。

如果你想要寫的東西自己java.util.zip是在Java 2標準版(J2SE)和Perl有Archive::Zip

+0

SOL原來是正確的答案。我們的安裝基地非常多樣,幾乎沒有我們所有的客戶擁有。看起來我們最終會使用jar來獲得我們軟件的新版本(因爲我們需要jdk),而舊版本會有捆綁的zip應用程序。感謝所有的反饋。 – Morinar 2009-08-13 21:15:51

+1

爲了進一步提高它,你確實意識到JAR文件*是* ZIP文件,對嗎?這會讓你有一些前向兼容性。 – 2009-08-13 23:55:32

1

你總是可以考慮發佈一個開源的壓縮工具,甚至使用壓縮SDK爲您的應用程序的一部分,如7 ZIP's

1

如果您安裝了Java(無論JRE或JDK),你可以使用pack200unpack200來創建和解壓檔案。 Pack200使用非常標準的gzip壓縮。

您應該注意,pack200不允許在一個存檔中壓縮多個文件(gzip的性質)。如果需要,您可以使用純Java實現自己的工具,該工具將創建zip文件並使用統一的命令行界面(Java內置zip支持,請參閱some samples)在任何位置運行。

如果你走這條路線,你也可以使用原生的bz2或7zip格式的java實現來獲得更好的壓縮。

+0

這看起來像Windows機器上的贏家,但我似乎無法在任何Unix機器上找到它。它會在一個非標準的地方或什麼東西? – Morinar 2009-08-11 22:37:32

+0

pack200可在Sun JDK的Linux平臺的JDK_HOME/bin文件夾中找到。如果您在服務器上安裝GCJ,那麼您運氣不好,必須使用Java實現您的小型應用程序才能創建歸檔。 – CrazyCoder 2009-08-11 22:42:08

4

我喜歡7-zip很多,但對於像你這樣的情況我總是去最不常見的denominataor:ZIP。簡單的舊ZIP。大多數Unices和linuxes都有zipunzip。而對於Windows,有很多選項,包括7-zip,可以操縱zip文件。可能客戶端將安裝一個zip客戶端。