2025/11/5 IO流(字节流、字符流、字节缓冲流、字符缓冲流) 计算机存储规则(ASCII、GBK、Unicode)
IO流(存储和读取数据的解决方案)

![]()
IO流的分类

纯文本文件:Windows自带的记事本打开能读懂

IO流体系

FileOutputStream
![]()

FileOutputStream书写细节

FileOutputStream写数据的三种方式


FileOutputStream写数据的两个问题
换行写


续写


FileInputStream
![]()


FileInputStream循环读取
一定要定义第三方变量

文件拷贝
注意:选择一个比较小的文件,不要太大

FileInputStream读取的问题
FileInputStream一次读写一个字节
FileInputStream一次读写多个字节

![]()

文件拷贝(一次读写多个字节),节省运行时间

try...catch异常处理




字节流读取文件的时候,文件中不要有中文
ASCII字符集
存储英文,一个字节就足以
计算机存储规则(英文)


1个字节=8个比特
![]()


计算机存储规则(英文)(GBK)
![]()
![]()
计算机存储规则(汉字)(GBK)
规则1:汉字两个字节存储
规则2:高位字节二进制一定以1开头,转成十进制之后是一个负数


![]()

总结

字符集
Unicode:万国码

![]()

计算机存储规则(英文)(Unicode)

计算机存储规则(中文)(Unicode)


UTF-8是Unicode字符集的一种编码方式
总结

为什么会有乱码?
![]()
字节流:一次读取一个字节
![]()

如何不产生乱码?

扩展
![]()

Java中编码的方法


![]()
Java中解码的方法


![]()
字符流
字符流的底层就是字节流
字符流=字节流+字符集
特点:

使用场景:对纯文本文件进行操作

FileReader
1)创建字符输入流对象

2)读取数据

空参read方法读取数据

有参read方法读取数据

3)释放资源

FileWriter构造方法

FileWriter成员方法

FileWriter书写细节


字符流原理解析


flush和close方法

字节流和字符流的使用场景

练习一:文件加密


用一个数字异或同一个数字两次可以得到本身
加密

解密

练习二:修改文件中的数据

细节1:文件中的数据不要换行
细节2:bom头
IO流体系

字节缓冲流:底层自带了长度为8192的缓冲区提高性能

练习-拷贝文件(一次读写一个字节)

一次读写多个字节

字节缓冲流提高效率的原理

字节缓冲流:底层自带了长度为8192的缓冲区提高性能
字节缓冲流的构造方法

字节缓冲流的特有方法




总结

练习一:拷贝文件



练习二:修改文本顺序

