2

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

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

为了保持系统简单,我不想费力地集成不支持通过 Stream API 使用的东西(如 7-Zip LZMA)。除了 JRE 提供的 GZIP 压缩实现之外,是否还有任何可能有用的压缩实现?FOS 优先。

4

3 回答 3

3

您可以尝试使用 bzip 库。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/

于 2012-01-18T11:38:26.863 回答
1

您可以尝试使用LZMA。看起来有人在这里实现了流的使用。

于 2012-01-18T11:41:22.403 回答
0

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

于 2012-01-24T17:11:12.157 回答