按流的方向分类:

    • 输入流:数据流从数据源到程序(以 InputStream、Reader 结尾的流)。
    • 输出流:数据流从程序到目的地(以 OutPutStream、Writer 结尾的流)

    image.png

    按处理的数据单元分类:

    • 字节流:以字节为单位获取数据,命名上以 Stream 结尾的流一般是字节流, 如 FileInputStream、FileOutputStream。
    • 字符流:以字符为单位获取数据,命名上以 Reader/Writer 结尾的流一般是字 符流,如 FileReader、FileWriter

    按处理对象不同分类:

    • 节点流:可以直接从数据源或目的地读写数据,如 FileInputStream、FileReader、 DataInputStream 等。
    • 处理流:不直接连接到数据源或目的地,是”处理流的流”。通过对其他流的处 理提高程序的性能,如 BufferedInputStream、BufferedReader 等。处理流也叫 包装流

      节点流处于 IO 操作的第一线,所有操作必须通过它们进行;处理流可以对节 点流进行包装,提高性能或提高程序的灵活性
      image.png