GZIPInput / OutputStream的替代品具有更好的压缩比?

时间:2012-01-18 11:34:50

标签: java stream data-compression

我需要存储abitrary二进制数据(基本上是各种常见格式的文件,JPEG,PDF,MS-Office和其他一些奇怪的文件)。缓慢压缩不是问题,但我正在寻找合理快速的减压和尽可能好的压缩比。

现在我的系统会立即存储未压缩的数据,并且后台程序会尝试稍后压缩数据,现在我实现的唯一选项是使用GZIP。如果文件可以被压缩,它将被守护进程透明地替换为压缩版本(这就是为什么缓慢压缩根本不会打扰我)。如果有更多选项,我会非常乐意让守护进程尝试所有选择,并选择能产生最佳压缩效果的守护进程。

为了保持系统简单,我不想花很多时间来整合那些不支持通过Stream API使用的东西(比如7-Zip LZMA)。除了JRE提供的GZIP之外是否有任何压缩实现可能有用? FOS首选。

3 个答案:

答案 0 :(得分:3)

你可以尝试使用bzip lib。 bzip通常具有更高的压缩率,速度费用。下面的一些实现:

http://www.kohsuke.org/bzip2//

http://code.google.com/p/jbzip2/

http://www.java2s.com/Code/Java/File-Input-Output/BZip2format.htm

在apache commons compress lib上还有一个bzip实现:

http://commons.apache.org/compress/

答案 1 :(得分:1)

您可以尝试使用LZMA。看起来有人实现了使用流{{3p>

答案 2 :(得分:0)

纯Java中的另一个LZMA实现:XZ for Java(包括LZMA)。