概念:
- Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作;
- 在Java中把不同的输入/输出源抽象表述为"流"。
- 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
- 即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的四大基类
四种抽象基类分别为:InputStream,Reader,OutputStream,Writer
四种基类下,对应不同的实现类,具有不同的特性;
输入流和输出流:
输入流: 只能从中读取数据,不能向其写入数据
输出流: 只能向其写入数据,不能从中读取数据
字节流和字符流:
(字节流和字符流和用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同);
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
节点流和处理流:
可以从/向一个特定的IO设备(如磁盘、网络)读/写数据的流,称为节点流,节点流也被成为低级流。
处理流是对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能,处理流也被称为高级流。
(当使用处理流进行输入/输出时,程序并不会直接连接到实际的数据源,没有和实际的输入/输出节点连接。使用处理流的一个明显好处是,只要使用相同的处理流,程序就可以采用完全相同的输入/输出代码来访问不同的数据源,随着处理流所包装节点流的变化,程序实际所访问的数据源也相应地发生变化)