IO流的原理以及分类
1 IO流的原理
1.1 简要分析
IO流中的I是input,输入的意思,就是磁盘中的文件读取到程序的内存中
IO流中的O是output,输出的意思,是程序的内存上的数据输出到磁盘上的文件中(也可以传到网络上的某个地址)
他是以内存为参考系,从内存出去叫做输出,从外部进入内存叫做输入
1.2 原理图
2 IO流的分类
2.1 按照流向划分
输入流:数据从磁盘文件到内存中一个过程
输出流:数据从内存中到磁盘文件中的一个过程
2.2 按照操作数据单位划分
2.2.1 字节流
a 以1字节(8比特位)去进行文件的数据的存取
b 适用于所有的文件类型,因为所有文件底层都是由二进制组成的
c 但是读取中文汉字的时候会出现乱码问题:
因为在ANSI编码格式中,字母和数字都是一个字节,但是中文汉字在windows系统中是2个字节,你逐个去进行取出的话,可能会出现乱码的问题,因为他识别不了数字对应的ascii编码表里面对应的字母
d. 字节流都是以Stream为结尾的,他的顶级抽象父类为InputStream或者OutputStream
2.2.2 字符流
a 以一个字符进行读取
b 字符可以是一个英文字母、中文汉字,也可以是中英文的标点符号
c 字符流是以Reader或者Writer为结尾的,其中以Reader结尾为输入流,以Writer结尾就代表他是输出流
2.3 按照流的角色
节点流和处理流(包装流)
3 四大流派示意图(IO包下的)
抽象基类 | 字节流 | 字符流 | 实现的接口 |
---|---|---|---|
输入流 | InputStream | Reader | Closeable接口 |
输出流 | OutputStream | Writer | Flushable接口、Closeable接口 |