何时使用缓冲区,以及用于什么

时间:2014-03-16 11:33:25

标签: java io buffer inputstream outputstream

我对input streamoutput stream感到困惑。我们何时需要使用Buffered outputinput Streams。与Buffered ReaderBuffered Writer相同?

3 个答案:

答案 0 :(得分:1)

使用缓冲区和原因: 使用out缓冲区I / O意味着每个读取或写入请求由底层OS直接处理。这可能会使程序的效率降低,因为每个此类请求通常会触发磁盘访问,网络活动或其他相对昂贵的操作。

为了减少这种开销,Java平台实现了缓冲的I / O流。缓冲输入流从称为缓冲区的存储区读取数据;仅当缓冲区为空时才调用本机输入API。类似地,缓冲输出流将数据写入缓冲区,仅当缓冲区已满时才调用本机输出API。

程序可以使用我们现在多次使用的包装习惯用法将无缓冲的流转换为缓冲流,其中无缓冲的流对象被传递给缓冲流类的构造函数。以下是如何修改CopyCharacters示例中的构造函数调用以使用缓冲的I / O:

inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));

参考:Java Docs

答案 1 :(得分:0)

检查http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html(和其他人),了解如何使用它们以及它们的用例。您可以使用缓冲包装类来使用它们的方法(在更高的抽象级别上),如BufferedReader.readLine(),而不是处理Streams的字节处理,并让语言处理潜在的问题。

答案 2 :(得分:0)

输入流=从文件中读取字节

输出流=将字节写入文件

缓冲读卡器=使用缓冲区

从文件中读取字符

缓冲写入器=使用缓冲区

将字符写入文件

缓冲输入流=使用缓冲区从文件读取字节

缓冲输出流=使用缓冲区

将字节写入文件

总是更喜欢缓冲流或读写器,因为它们在写入或读取之前使用缓冲区内存而不是实际的物理内存。它们更有效,更快捷。

流和读写器分别只有读/写,字节或字符的差别。