Java IO流进阶:字节流与字符流的深度应用
1.1 本章学习目标与重点
- 掌握字节流与字符流的核心区别,能够根据实际开发场景选择合适的 IO 流实现文件操作。
- 熟练运用缓冲流提升 IO 操作效率,解决大文件读写的性能问题。
- 理解转换流的作用,处理不同编码格式的文件读写,避免乱码问题。
- 重点提示:本章核心在于流的嵌套使用和资源释放的标准写法,这是实际开发中的高频考点与易错点。
1.2 字节流与字符流的核心差异
1.2.1 基本概念与设计初衷
- 字节流以
byte为基本单位进行数据传输,可处理所有类型的文件(如图片、视频、音频、文本等)。 - 字符流以
char为基本单位进行数据传输,专门用于处理文本文件,底层会自动涉及字符编码的转换。
字节流的核心抽象类是 InputStream 和 OutputStream,字符流的核心抽象类是 Reader 和 Writer。实际开发中通常使用其子类,如 FileInputStream、FileWriter 等。
核心结论:处理非文本文件必须使用字节流;处理纯文本文件优先使用字符流。
1.2.2 代码实操:字节流读写文本文件
- 创建
FileInputStream对象,关联目标文本文件test.txt。 - 定义
byte数组作为缓冲区,减少磁盘 IO 次数。 - 循环读取数据并转换为字符串,输出至控制台。
- 在
finally块中安全关闭流资源,释放文件句柄。
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamDemo {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = ();
[] buffer = [];
len;
((len = fis.read(buffer)) != -) {
System.out.print( (buffer, , len));
}
} (IOException e) {
e.printStackTrace();
} {
(fis != ) {
{
fis.close();
} (IOException e) {
e.printStackTrace();
}
}
}
}
}


