一、Java流设计理念
Java将数据的输入输出(I/O)操作当作“流”来处理,“流”是一组有序的数据序列。“流”分为两种形式:输入流和输出流,从数据源中读取数据是输入流,将数据写入到目的地是输出流。以CPU为中心,从外部设备读取数据到内存,进而再读入到CPU,这是输入(Input,缩写 I)过程;将内存中的数据写入到外部设备,这是输出(Output,缩写O)过程。所以输入输出简 称为I/O。
如图所示:数据输入的数据源有多种形式,如文件、网络和键盘等,键盘是默认的标准输入设备。而数据输出的目的地也有多种形式,如文件、网络和控制台,控制台是默认的标准输出设备。
所有的输入形式都抽象为输入流,所有的输出形式都抽象为输出流,它们与设备无关。
二、流类继承层次
以字节为单位的流称为字节流,以字符为单位的流称为字符流。Java SE提供4个顶级抽象类,两个字 节流抽象类:InputStream和OutputStream;两个字符流抽象类:Reader和Writer。
(1)字节输入流
字节输入流根类是InputStream,下图是它的子类
字节输入流类继承层次:
(2)字节输出流
字节输出流根类是OutputStream,下图是它的子类
字节输出流类继承层次:
(3)字符输入流
字符输入流根类是Reader,下图是它的子类
字符输入流类继承层次:
(4)字符输出流
字符输出流根类是Writer,下图是它的子类
字符输出流类继承层次: