BufferedOutputStream的目的是什么?

时间:2011-04-06 05:22:26

标签: java

我想知道BufferedOutputStream的用途,使用它时的性能提升?

4 个答案:

答案 0 :(得分:16)

以下是API of BufferedOutputStream的行:

  

该类实现缓冲输出流。通过设置这样的输出流,应用程序可以将字节写入基础输出流,而必然会为每个写入的字节调用底层系统。

它可以在缓冲区内完成大部分操作,而无需调用底层系统。

例如,考虑写入文件:没有缓冲区,它必须为每个字节进行系统调用,这显然很慢。

答案 1 :(得分:8)

顾名思义,BufferOutputStream有一个内部缓冲区(byte[]),首先复制各个小写入的内容。当缓冲区已满或刷新流或流已关闭时,它们将写入基础OutputStream。 如果对于基础OutputStream的每次写入操作都存在(相对较大的)固定开销,这会产生很大的不同,就像FileOutputStream(必须进行操作系统调用)的情况一样压缩流。

同时,许多基于流的库使用自己的缓冲(如XML和JSON编写器),使用BufferedOutputStream没有任何好处。但它自己的开销相对较低,因此没有太大的风险。

答案 2 :(得分:3)

BufferedOutputStream提供输出数据缓冲,通过存储要写入缓冲区的值并在缓冲区填充或调用flush()方法时实际写出来提高效率。

答案 3 :(得分:0)

Java BufferedOutputStream类用于缓冲输出流。它在内部使用缓冲区存储数据。与将数据直接写入流相比,它提高了效率。因此,它可以提高性能。