有没有办法gzip Java中的字节缓冲区?

时间:2018-10-09 06:43:49

标签: java jvm gzip nio bytebuffer

我的DirectByteBuffer很大,我想用它生成一个gzip压缩的DirectByteBuffer,而无需将其内容传输到堆中。

标准java.util.Deflater不能起作用,因为它在byte[]上运行,而libzip定义为堆。

在Java中有没有办法做到这一点?还是我必须直接通过JNI致电Bike

1 个答案:

答案 0 :(得分:6)

从Java 11开始,有

允许将输入和输出指定为字节缓冲区。当然,它的实现取决于是否实际上是否允许直接进行堆外处理,但是快速浏览OpenJDK可以发现,它具有native方法用于缓冲区到缓冲区的处理。

从技术上讲,它不是GZip,除非您也正在编写​​该文件格式的工件,但我想,您主要是对压缩感兴趣,而不是文件格式。