java - 何时使用缓冲区以及有何用途

标签 java io buffer inputstream outputstream

我对输入流输出流感到困惑。我们什么时候需要使用缓冲输出输入流。与 Buffered ReaderBuffered 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/

相关文章:

Java HTTP 获取请求

java - 在java中访问JSONObject的键的有效方法

java - war 文件应该有多大?

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 重新实现 org.apache.commons.net.io.Util 来解析 InputStream

java - 使用循环语句除以两个数

python - 在 python 脚本中仅使用从 Arduino 读取的最新值,而不是存储在缓冲区中的值?

c - Websocket key 哈希

linux - 判断socket上是否还有数据并丢弃

python - 当进程被终止时,如何在 Python 中清理文件对象?