IO与流 -- 字符流

字符流

  • 用于操作数据中的字符数据(字节流 + 编码表)

超类

Reader
  • 读取字符流的抽象超类
  • read() 读取单个字符并返回
  • read(char[] cbuf) 把数据读取到数组中,并返回读取个数
Writer
  • 写入字符流的抽象超类
  • write(int c) 写入单个字符

字符缓冲流

  • 可以提高读写效率
BufferedWriter
  • 缓冲字符输出流
BufferedReader
  • 缓冲字符输入流

便捷类,默认编码操作

  • 因识别中文码表不唯一,涉及到编码解码问题
FileReader
  • 字节流读取 + 操作系统默认编码表
FileWriter
  • 字节写入流 + 操作系统默认编码表

字符流通向字节流的桥梁

InputStreamReader
  • 将读入的字节流按照指定的编码表转成字符串
OutputStreamWriter
  • 将字符串按照指定的编码表转成字节,再使用字节流将这些字节写出去

一个栗子(Windows环境)

InputStreamReader isr =  new InputStreamReader(new FileInputStream("text.txt"));//默认字符集
InputStreamReader isr =  new InputStreamReader(new FileInputStream("text.txt"), "GBK");//指定的是gbk字符集
FileReader fr = new FileReader("text.txt");
  • 此上三句代码的功能完全相同,其中第三句话最为便捷
  • 但一旦要指定其他的编码时,绝对不能用子类,必须使用字符流转换,因为只有父类才能够转换编码

你可能感兴趣的:(IO与流 -- 字符流)