day1
计划
- 今天学完IO
笔记
1.File
- File的3个构造方法
- 表示什么:路径,可以表示文件或文件夹
- 常用方法
- 判断,获取
- 创建,删除
- 遍历
- 不能读写数据,读写需要用到IO流
2.IO流
1.字节流
- 计算机数据的最小单位是字节
- 字节流可以操作任何文件
- 字节流读取文本文件,需要读取为
byte[],指定编码方式转为字符串,否则中文字符会出现乱码。
- 字节流没有缓冲区,可以用byte数组来做缓冲区,提升读取的效率
2.字符流
- 字符集有ASCII,GBK,Unicode等
- ASCII英文占用1字节
- GBK兼容ASCII,英文1字节,中文2字节。英文字节首位为0,中文高位字节首位为1,由此区分中英文
- Unicode编码方式多样
- UTF-8,1-4字节表示字符,英文1,中文3
- UTF-16,2或4字节表示字符
- UTF-32,4字节表示字符
- 字符串转为
bite[]可以指定编码方式,bite[]构建字符串也可以指定编码。
- 字符流底层通过解码器按指定字符集将字节转换为字符。以 UTF-8 为例,解码器会识别字节头,决定本次读取 1~4 个字节拼成一个字符。
- 字符流可以在定义时指定编码格式,未指定就会用默认编码。
- 字符流的输入,输出流都有缓冲区
- 输入流,会先填满缓冲区,优先读取缓冲区,读完缓冲区后才会再取数据填满缓冲区。即使文件清空,也会先读完缓冲区的数据。
- 输出流,会先存到缓冲区,如果不调用
flush() 或 close(),数据会一直卡在内存中,直到缓冲区满了才会写入文件。