java - FileWriter 和 BufferedWriter 中的缓冲区
问题描述
的 apiFileWriter
以这些话开头:
“使用默认缓冲区大小将文本写入字符文件。”
的 apiBufferedWriter
以这些话开头:
“将文本写入字符输出流,缓冲字符 [...]”
因此,显然这两个类都在使用缓冲区。不幸的是,api 没有解释这两种缓冲区之间的区别。
所以,我问自己:区别在哪里?
解决方案
当您有多个写入时,BufferedWriter 效率更高。它保存了小写入并在一个大块中写入。下面是 BufferedWriter 的 write() 方法,它检查缓冲区是否已满if (nextChar >= nChars)
并刷新缓冲区。
public void write(int c) throws IOException {
synchronized (lock) {
ensureOpen();
if (nextChar >= nChars)
flushBuffer();
cb[nextChar++] = (char) c;
}
}
至于 FileWriter,每次写入都会进行一次系统调用,而 BufferedWriter 会在缓冲区满后进行系统调用。所以如果你有多个小写,BufferedWriter 会更有效。
推荐阅读
- css - 图片底部的文字
- c++ - 代码块的 FLTK 错误
- java - 我应该如何解决 Springframework.Dispatcherservlet 错误?
- azure - 事件中心的事件网格订阅以摄取特定分区中的日志
- php - 无法将 SQLEXPRESS 与 Laravel 5.6 连接
- android - 如果未安装 Twitter 应用程序,Android 应用程序 Twitter 登录失败(不显示 webView 登录屏幕)
- spring-integration - 在弹簧集成中将信息传递给弹簧变压器
- php - 如何显示 ol-3 层切换器
- button - 尝试在Odoo 10中通过按钮打开另一个向导时如何停止关闭向导
- vba - 大输入框文本:如何显示超过 6 个工作簿的列表?