我想知道 BufferedOutputStream 的作用,以及在使用它时是否有性能提升?
以下是来自BufferedOutputStream API的一行:
该类实现了一个缓冲输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不一定会导致每个写入的字节都调用底层系统。
它可以在缓冲区内完成大多数操作,而不必调用底层系统。
例如,考虑写入文件:如果没有缓冲区,每个单独的字节都需要进行系统调用,这显然会很慢。
BufferedOutputStream
有一个内部缓冲区(byte[]
),用于存储单个小写操作的内容。当缓冲区已满、流被刷新或流被关闭时,它们将被写入底层的OutputStream
。OutputStream
的每个写操作都存在(相对较大的)固定开销,例如FileOutputStream
(必须进行操作系统调用)和许多压缩流,则这可能会产生很大的差异。BufferedOutputStream
没有任何好处。但它自己的开销相对较低,因此风险不大。BufferedOutputStream提供输出数据缓冲,通过将要写入的值存储在缓冲区中,并在缓冲区填满或调用flush()方法时实际将其写出,从而提高效率。