java - 我应该使用什么顺序 GzipOutputStream 和 BufferedOutputStream

标签 java gzipoutputstream

谁能推荐我是否应该这样做:

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/

相关文章:

java - RxJava : Consume result of Observable on another thread

java - 如何使用 Gzip (Deflate) 创建高度可压缩的文件?

java - GZIPOutputStream 在单独的线程中进行压缩

java - GZIPOutputStream 是否已知会在压缩过程中丢失数据?

java - 无法打开 ServletContext 资源 [/src/main/resources/security-context.xml]

java - Spring-data-mongo 无法使用构造函数实例化 java.util.List

java - 当您不知道 View 的尺寸时如何移动 View ?

c# - Android 版单声道 : Displaying a file chooser?

java - Gzip 解压后多加一个字节...为什么?

java - OS X gzip 可以配置为匹配 Java GZIPOutputStream 吗?