什么是DEFAULT_COMPRESSION?

时间:2013-05-10 15:21:05

标签: java gzip zlib deflate

可能的DEFLATE压缩级别[0 .. 9],Java的Deflater.DEFAULT_COMPRESSION对应哪一个?在Java源代码中,我将其视为public static final int DEFAULT_COMPRESSION = -1;

2 个答案:

答案 0 :(得分:12)

java代码使用类new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap)); init方法是本机调用,ZStreamRef是对zlib的引用。所以它是zlib默认使用的东西。在版本1.2.8中,默认值为6,如devnull所述。

来自zlib手册

Compression levels.
#define Z_NO_COMPRESSION         0
#define Z_BEST_SPEED             1
#define Z_BEST_COMPRESSION       9
#define Z_DEFAULT_COMPRESSION  (-1)
...
 Z_DEFAULT_COMPRESSION requests a default compromise between speed and compression (currently equivalent to level 6).

答案 1 :(得分:11)

Z_DEFAULT_COMPRESSION旨在成为速度和压缩效果之间的良好折衷。这是曲线上的膝盖。它当前等效的实际级别,6,是一个内部选择,如果压缩算法发生变化,可能会在未来版本中更改。所以你不应该依赖它等同于6级。