java复习随笔(五)——IO流

字节流

  1. OutputStream(字节输出流)
    OutputStream是抽象类,无法实例化,同时也是所有字节输出流的超类。

    • FileOutputStream(字节文件输出流)
      FileOutputStream用于写文件。通过write方法将指定字节写入文件。
      构造方法:
      FileOutputStream(File f)
    • BufferedOutputStream(字节缓冲输出流)
      BufferedOutputStream实现缓冲输出流,是FileOutputStream的一个子类,是FileOutputStream的加强流。在进行输出时,该类会在内存中开辟一段缓冲区空间。因为缓冲区在内存中的读写速度很快,以此来达到提升输出流的效率。
      构造方法:
      BufferedOutputStream(OutputStream os)

  2. InputStream(字节输入流)
    InputStream是抽象类,无法实例化,同时也是所有字节输入流的超类。

    • FileInputStream(文件输入流)
      FileInputStream用于读文件,通过read方法读取,每次读取一个字节的数据。读到文件末尾返回-1。读取的类型是int。
      构造方法:
      FileInputStream(File f)
    • BufferedInputStream(缓冲输入流)
      BufferedInputStream实现缓冲输入流,是FileInputStream的一个子类,是FileInputStream的加强流。在进行输出时,该类会在内存空间开辟一段内存缓冲区空间。因为缓冲区在内存中读写速度很快,以此来达到提升输入流的效率。
      构造方法:
      BufferedInputStream(InputStream is)

字符流

字符流为什么会出现?

一个汉字的存储,如果是GBK编码,占用两个字节。如果是UTF-8编码,占用三个字节。
字节流是一个一个字节读取,当解码时,会将一个字节当做一个字符。这时原本三个字节组成的字符被拆分,那么就会得到一串乱码。
而字符流就是为解决这一问题而生的。

  1. Writer(字符输出流)
    Writer是抽象类,无法实例化,同时也是所有字符输出流的超类。

    • OutputStreamWriter
      OutputStreamWriter是从字符流到字节流的桥梁,使用指定的charset将写入的字符编码为字节。它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台默认的字符集。
      OutputStreamWriter,

  1. Reader(字符输入流)
    Reader是抽象类,无法实例化,同时也是所有字符输入流的超类。

    • InputStreamReader
      InputStreamReader是从字节流到字符流的桥梁,它读取字节,并使用指定的charset将其解码为字符。它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台默认的字符集。
posted @ 2022-09-04 11:26  maplerain  阅读(18)  评论(0编辑  收藏  举报