一、IO流原理

IO,即inout,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。

Java 中是通过流处理IO 的,那么什么是流

流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。

当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

二、 分类

  1. 根据操作数据单位不同分为
    1. 字节流(8bit)
      1. 字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。
    2. 字符流(16bit)
      1. 字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。
  2. 根据数据流的流向分为
    1. 输入流
    2. 输出流
  3. 按流的角色不同可以分为
    1. 节点流
    2. 处理流