2009-08-11 81 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客户端。