时间:2010-07-26 14:49:20

标签: java zip gzip nio filechannel

2 个答案:

答案 0 :(得分:19)

答案 1 :(得分:5)

是的,有一个解决方案。实现GZip非常简单。你需要一个Inflater和CRC32,再加上阅读标题/预告片。不幸的是,java.util.zip.Inflater仅占用byte[],这是次优的(直接缓冲区的效率会提高一倍)。然而,使用非直接缓冲区和ByteBuffer.array()是一种选择。

内置的java.util.zip.CRC32非常慢,而reimplementing it in java是迈向性能的一个很好的一步。 com.jcraft.jzlib offers pure java implementation(几乎看起来像纯C),并且可以用直接缓冲区替换byte [] w。由于边界检查太多而无法执行如此深的内联,因此与inflater(decomppress)相比,库有点慢。然而,压缩速度更快。