day1 IO流

day1

计划

  1. 今天学完IO

笔记

1.File

  1. File的3个构造方法
  2. 表示什么:路径,可以表示文件或文件夹
  3. 常用方法
    1. 判断,获取
    2. 创建,删除
    3. 遍历
  4. 不能读写数据,读写需要用到IO流

2.IO流

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