代码之家  ›  专栏  ›  技术社区  ›  Some Name

有没有办法在Java中gzip一个字节缓冲区?

  •  4
  • Some Name  · 技术社区  · 6 年前

    我有一个很大的 DirectByteBuffer 我想制作一个gzip 直接缓冲器 而不将其内容转移到堆中。

    java.util.Deflater 无法帮助,因为它在上运行 byte[] 根据定义,它是堆上的。

    有没有一种方法可以在Java中做到这一点?否则我得打电话 libzip 直接通过 JNI ?

    1 回复  |  直到 6 年前
        1
  •  6
  •   Holger    6 年前

    从Java11开始,有

    允许将输入和输出指定为字节缓冲区。当然,它的实现依赖于它是否真的允许直接的堆外处理,但是快速查看OpenJDK发现它有一个 native

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