GZIPOutputStream和DeflateErOutputStream有什么区别?

2022-09-02 21:14:45

GZIPOutputStream只是 的子类,但两者都可以实例化。我什么时候使用一个而不是另一个?压缩是否相同?DeflaterOutputStream


答案 1

DeflaterOutputStreamZIPOutputStreamGZIPOutputStream 之间的差异反映了它们历史上的压缩前身之间的差异:

分别。Deflate可以被认为是压缩算法的参考实现,而ZIP和GZIP是它的“扩展”。后者都支持“存档”的概念,这在ZipOutputStream的Java API中更加明显。

如果您只是尝试压缩数据流,我建议您使用DefllaterOutputStream,但是如果您正在创建存档,则可能应该查看ZipOutputStream。


答案 2

DeflaterOutputStream实现了原始放气压缩方法。GZIPOutputStream增加了GZIP所需的其他逻辑:CRC-32检查,GZIP幻数,GZIP标头,拖车等。请参阅 GZIPOutputStream.javaDeflaterOutputStream.java 的源代码。


推荐