我对输入流
和输出流
感到困惑。我们什么时候需要使用缓冲输出
和输入流
。与 Buffered Reader
和 Buffered Writer
一样吗?
最佳答案
缓冲区的使用及原因: 没有缓冲区 I/O 意味着每个读或写请求都由底层操作系统直接处理。这可能会大大降低程序的效率,因为每个此类请求通常都会触发磁盘访问、网络 Activity 或其他一些相对昂贵的操作。
为了减少这种开销,Java 平台实现了缓冲 I/O 流。缓冲输入流从称为缓冲区的内存区域读取数据;仅当缓冲区为空时才会调用 native 输入 API。同样,缓冲输出流将数据写入缓冲区,只有当缓冲区已满时才会调用 native 输出 API。
程序可以使用我们已经多次使用的包装习惯将无缓冲流转换为缓冲流,其中无缓冲流对象被传递给缓冲流类的构造函数。下面介绍了如何修改 CopyCharacters 示例中的构造函数调用以使用缓冲 I/O:
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));
引用:Java Docs
关于java - 何时使用缓冲区以及有何用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436289/