谁能推荐我是否应该这样做:
os = new GzipOutputStream(new BufferedOutputStream(...));
或
os = new BufferedOutputStream(new GzipOutputStream(...));
哪个更有效率?我应该使用 BufferedOutputStream 吗?
最佳答案
GZIPOutputStream已经带有内置缓冲区。因此,没有必要在链中将 BufferedOutputStream 放在它旁边。 gojomo 的出色回答已经为放置缓冲区的位置提供了一些指导。
GZIPOutputStream 的默认缓冲区大小仅为 512 字节,因此您需要通过构造函数参数将其增加到 8K 甚至 64K。 BufferedOutputStream 的默认缓冲区大小为 8K,这就是您可以在组合默认 GZIPOutputStream 和 BufferedOutputStream 时衡量优势的原因。这一优势也可以通过适当调整 GZIPOutputStream 的内置缓冲区来实现。
所以,回答你的问题:“我应该使用 BufferedOutputStream 吗?” → 不,在你的情况下,你不应该使用它,而是将 GZIPOutputStream 的缓冲区设置为至少 8K。
关于java - 我应该使用什么顺序 GzipOutputStream 和 BufferedOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082320/