一、为什么需要缓冲流?
在Java的IO操作中,每读取一个字节/字符就进行物理磁盘访问,会导致:
-
高频系统调用:每个字节访问都触发底层I/O操作
-
性能瓶颈:机械硬盘寻道时间远大于内存访问时间
-
资源浪费:频繁小数据量传输效率低下
缓冲流通过内存缓冲区实现批量数据传输,将多次小数据操作转换为少量大数据操作,典型性能提升可达10倍以上。
二、缓冲流核心类
| 缓冲流类型 | 对应基础流 | 核心方法 |
|---|---|---|
BufferedInputStream | FileInputStream | read(byte[]) |
BufferedOutputStream | FileOutputStream | write(byte[], int, int) |
BufferedReader | FileReader | readLine() |
BufferedWriter | FileWriter | newLine(), flush() |


三、性能对比测试
测试场景:复制200MB视频文件
| 实现方式 | 耗时(毫秒) |
|---|---|
| 基础字节流 | 5200 |
| 缓冲字节流 | 420 |
| 缓冲流+8KB缓冲区 | 380 |
| NIO FileChannel | 350 |
