BufferedWriter的核心作用是提升文本写入效率,减少频繁的底层I/O调用;它通过8192字符缓冲区暂存数据,满载、flush()或close()时批量写出,须显式flush()或close()确保落盘,推荐用try-with-resources自动管理。
BufferedWriter 的核心作用是**提升文本写入效率,减少频繁的底层 I/O 调用**。它不直接操作文件或网络,而是作为“中间缓存层”,把零散的小量写入先暂存在内存中,等积攒到一定量或显式要求时,再一次性批量写到底层流(如 FileWriter、OutputStreamWriter)中。
没有缓冲时,每次调用 write() 都可能触发一次系统级写操作——比如打开磁盘通道、寻址、落盘。写 1000 次单字符,就可能产生 1000 次磁盘 I/O,性能极差,还加速硬件损耗。BufferedWriter 通过内置默认 8192 字符的缓冲区(可自定义),把多次小写入合并成少数几次大写入,显著降低开销。
它的行为依赖两个核心动作:
组 cb[],不立即落盘忘记 flush() 或 close() 是最常见的错误——数据会一直卡在内存缓冲区,文件里看不到任何内容。
标准写法示例(含异常处理):
FileWriter fw = new FileWriter("out.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("第一行");
bw.newLine();
bw.write("第二行");
bw.flush(); // 确保写出
bw.close(); // 自动 flush 并关闭 fw