根据充气输入流的javadoc,对于其单个arg构造函数(只有一个InputStream),输入流用a default decompressor and buffer size
初始化。问题是,默认的解压缩器和缓冲区大小究竟是多少?DeflaterOutputStream也是如此。
充气机只是一个
new java.util.zip.Inflator()
缓冲区大小为512字节。
您可以通过导航到充气输入流构造函数的源代码来看到这一点。IDE中没有附加JDK源代码吗?停止一切并做好准备,这是至关重要的。
如果查看源代码,您会发现它只是创建了java.util.zip.Inflater
:的一个实例
public InflaterInputStream(InputStream in) {
this(in, new Inflater());
usesDefaultInflater = true;
}
处理上的唯一区别是,在关闭InflaterInputStream
时,"默认"Inflater
将被关闭(使用end()
),如果Inflater
的实例被传递给其他构造函数之一,则不会发生这种情况。
假设通过自己的实现可以使用不同的实现,或者重用它等。