按照读写的单位大小来分:
- 字符流:以字符为单位,每次次读入或读出是 16 位数据。其只能读取字符类型数据。 (Java 代码接收数据为一般为 char 数组,也可以是别的)
- 字节流:以字节为单位,每次次读入或读出是 8 位数据。可以读任何类型数据,图片、文 件、音乐视频等。 (Java 代码接收数据只能为 byte 数组)
:
-
输出流:从内存读出到文件。只能进行写操作。
-
输入流:从文件读入到内存。只能进行读操作。
-
注意:输出流可以帮助我们创建文件,而输入流不会。
按照读写时是否直接与硬盘,内存等节点连接分:
- 节点流:直接与数据源相连,读入或读出。
- 处理流:也叫包装流,是对一个对于已存在的流的连接进行封装,通过所封装的流的功能 调用实现数据读写。如添加个 Buffering 缓冲区。(意思就是有个缓存区,等于软件和 mysql 中的 redis)
- 注意:为什么要有处理流?主要作用是在读入或写出时,对数据进行缓存,以减少 I/O 的 次数,以便下次更好更快的读写文件,才有了处理流。