使用Java Zip类或bash zip命令压缩文件

时间:2012-03-06 09:08:06

标签: java zip

我有一个生成输出文件的java应用程序,需要进行压缩。 目前,我在使用脚本

生成文件后将其压缩
$ zip <abc.zip> abc

其他选择是让Java代码使用以下类来压缩它。

java.util.zip.ZipEntry;
java.util.zip.ZipOutputStream;

现在,想知道在压缩率和时间方面哪个更好?

Java具有独立于系统的优势,但对我来说没问题。

4 个答案:

答案 0 :(得分:3)

Java的ZipOutputStream使用与zip命令一样的zlib作为本机库。所以在性能方面,它们应该是等价的。

答案 1 :(得分:0)

我认为性能会相同,但使用

zip -9 <abc.zip> abc

你可以获得更多压缩,你可以通过在zip命令中提供-r开关来避免在java中复制目录

答案 2 :(得分:0)

我认为通过使用ZipOutputStream包装写入文件的输出流,您可能会获得一些优势。

使用该脚本,您可以通过直接编写压缩流来避免执行以下操作:

  • 写出未压缩的文件
  • 启动外部流程(或将Java应用程序与脚本集成)
  • 再次阅读未压缩的文件
  • 压缩(两种方法共通)
  • 编写压缩文件(两种方法共通)

而如果您使用ZipOutputStream

  • 将结果写入流,压缩并将其写入压缩文件
  • 将您的应用与zip脚本集成在一起并不令人头疼。
  • 你知道你的部署平台上是否有zip可用,这里我已经在Linux上获得了它,但在AIX上没有它)

与往常一样,解决方案是对其进行原型设计并进行测试,然后确定哪种性能/压缩更好/可接受。

答案 3 :(得分:-1)

我认为Java当然速度较慢,因为它在JVM上运行,而不是直接运行在操作系统上。 如果我是你,我将继续使用该脚本,只要我有时间自己执行它。 如果你自动化它会更好,如果你没有时间每次都执行它们,。