zlib 如何在 JAVA 中正确地扩充 GZIP 预告片?
How does zlib inflate GZIP trailer correctly in JAVA?
在 JAVA 中使用 GZIPInputStream
时,它不会将整个缓冲区传递给 zlib 并将其扩展为 GZIP 格式。相反,似乎 GZIP 头在 JAVA 端处理,然后将剩余部分(原始 deflate 数据 + GZIP 尾部)传递给 zlib 并以 DEFLATE 格式进行膨胀工作。
我的问题是 zlib 如何正确地膨胀工作,因为传入的数据不仅仅是原始的收缩数据?换句话说,zlib 是如何保留 8 字节的尾部而不将其视为需要解压的数据?
deflate 格式是自终止的。 zlib 停止解压缩原始 deflate 流,直到处理完标记为最后一个块的 deflate 块。剩下的是 Java 代码处理的预告片。
在 JAVA 中使用 GZIPInputStream
时,它不会将整个缓冲区传递给 zlib 并将其扩展为 GZIP 格式。相反,似乎 GZIP 头在 JAVA 端处理,然后将剩余部分(原始 deflate 数据 + GZIP 尾部)传递给 zlib 并以 DEFLATE 格式进行膨胀工作。
我的问题是 zlib 如何正确地膨胀工作,因为传入的数据不仅仅是原始的收缩数据?换句话说,zlib 是如何保留 8 字节的尾部而不将其视为需要解压的数据?
deflate 格式是自终止的。 zlib 停止解压缩原始 deflate 流,直到处理完标记为最后一个块的 deflate 块。剩下的是 Java 代码处理的预告片。