1、导读
对于设备之间的流动(即写入数据或读出数据),Java专门用Java.io包进行操作。这些数据的流动便是我们所说的数据的输入输出流(IO流)。
2、数据流的处理:字节流和字符流
数据的基本单位是字节(Byte),所以数据流中对数据的操作一般以字节来处理,这种对数据以字节的处理方式称为字节流,字节流的处理方式即将数据按照字节存储,然后对字节进行输入或输出操作,以实现对数据的读写操作。
但文本数据(即文字),不能单单用字节存储就可以,文字都需要对应的编码来识别,但不同的文字使用的编码又不尽相同,如英语用ASCII码、中文用GBK码、国际统一文字编码Unicode,这样一来一旦使用的是字节流处理文本数据,就会发生编码异常问题,即假设我们用字节流处理中文,存储的时候是字节,但当我们使用的时候编码方式不是GBK,就会出现文字乱码现象,所以java有提供了另一种文本数据处理方式:字符流。
字符流即处理文本数据时以字符的方式处理,并带有编码方式,这样存储的文字就不容易发生乱码现象。
3、IO流体系
根据数据的流向:输入和输出.(读或写)、数据的处理方式:字节流和字符流,可以将IO流划分为4大体系(即IO流的4个抽象基类):
注:这四个类都是抽象类,其中InputStream类和Reader类是输入向,而OutputStream类Writer类是输出向。另外这4个类的子类都已父类的名字作为后缀来命名:如FileInputStream类一看就是InputStream类的子类,而FileReader类一看就是Reader的子类。