我的问题是在某些方面类似于此: what's the purpose of BufferedOutputStream? 我已阅读的答案在那里,但还是有一件事我真的不明白: 所以在Java中的BufferedOutputStream具有内部缓冲区。如果此缓冲区已满或flush()被调用,它将数据写入基础OutputStream(传递给BufferedOutputStream的构造函数的那个)。 到目前为止确定。但对我来说,它看起来像是实际上任何OutputStream都会有这样一个缓冲区 - 因为基类OutputStream有一个flush()方法。此方法的描述是:“刷新此输出流并强制写出所有缓冲的输出字节。” 因此......如果所有的OutputStream都有一个缓冲区,那么BufferedOutputStream有什么好处呢? 也许我误解了一些东西......你能帮我吗?java中BufferedOutputStream的好处是什么?是否每个OutputStream都没有缓冲区?
问候, 丹尼尔
'这个方法的描述是sais:“刷新这个输出流,并强制任何缓冲的输出字节被写出',你的问题是基于一个错误的假设 – EJP
并非每个'OutputStream'都有一个内部缓冲区,但是当你用一个足够大的数组参数调用'write'的时候,它仍然会有一个缓冲区,在这方面,'BufferedOutputStream'确实已经过时并且是一个过度使用的特性,更多的情况是修复代码太多小写,而不是通过使用BufferedOutputStream来解决问题,对于使用合理缓冲区大小的代码,另外使用BufferedOutputStream甚至可以降低性能 – Holger