I/O 类体系 在JDK API 中,基础的IO 类都位于java.io 包,而新实现的IO 类则位于一系列以java.nio 开头的包名中,这里首先介绍java.io 包中类的体系结构。 按照前面的说明,流是有方向的,则整个流的结构按照流的方向可以划分为两类: 1、输入流: 该类流将外部数据源的数据转换为流,程序通过读取该类流中的数据,完成对于外部数据源中数据的读入。 2、输出流: 该类流完成将流中的数据转换到对应的数据源中,程序通过向该类流中写入数据,完成将数据写入到对应的外部数据源中。 而在实际实现时,由于JDK API 历史的原因,在java.io 包中又实现了两类流:字节流(byte stream)和字符流(char stream)。这两种流实现的是流中数据序列的单位,在字节流中,数据序列以byte 为单位,也就是流中的数据按照一个byte 一个byte 的顺序实现成流,对于该类流操作的基本单位是一个byte,而对于字节流,数据序列以char 为单位,也就是流中的数据按照一个char 一个插入的顺序实现成流,对于该类流操作的基本单位是一个char。 另外字节流是从 JDK1.0 开始加入到 API 中的,而字符流则是从 JDK1.1 开始才加入到 API 中的,对于现在使用的JDK 版本来说,这两类流都包含在API 的内部。在实际使用时,字符流的效率要比字节流高一些。 在实际使用时,字符流中的类基本上和字节流中的类对应,所以在开始学习IO 类时,可以从最基础的字节流开始学习。 在SUN 设计 JDK 的IO 类时,按照以上的分类,为每个系列的类设计了一个父类,而实现具体操作的类都作为该系列类的子类,则IO 类设计时的四个体系中每个体系中对应的父类分别是: 字节输入流Inpu tStream 该类是IO 编程中所有字节输入流的父类,熟悉该类的使用将对使用字节输入流产生很大的帮助,下面做一下详细的介绍。 按照前面介绍的流的概念,字节输入流完成的是按照字节形式构造读取数据的输入流的结构,每个该类的对象就是一个实际的输入流,在构造时由 API 完成将外部数据源转换为流对象的操作,这种转换对程序员来说是透明的。在程序使用时,程序员只需要读取该流对象,就可以完成对于外部数据的读取了。 InputStream 是所有字节输入流的父类,所以在InputStream 类中包含的每个方法都会被所有字节输入流类继承,通过将读取以及操作数据的基本方法都声明在InputStream 类内部,使每个子类根据需要覆盖对应的方法,这样的设计可以保证每个字节输入流子类在...