IO流--IO流继承体系结构1. IO继承体系结构1). IO继承体系结构图示省略2). IO四大继承体系相互比较和对应关系 (1). 横向比较 ----对应关系 [1]. Writer和Reader的对应关系说明 {1}. Writer体系中的PrintWriter在Reader中没有对应的类存在 {2}. Reader体系中的PushbackReader和LineNumberReader在Writer中没有对应的类存在。 [2]. OutputStream和InputStream的对应关系说明 {1}. OutputStream体系中的PrintStream在InputStream中没有对应的类存在 {2}. InputStream体系中的SequenceInputStream、LineNumberinputStream、PushbackInputStreamhe和StringBufferInputStream在OutputStream中没有对应的类存在。 (2). 纵向比较I ----字节流和字符流继承体系结构的对应关系 [1]. InputStream中的StringBufferInputStream和Reader中的StringReader对应 [2]. InputStream中的ByteArrayInputStream和Reader中的CharArrayReader对应 【对应的原因】就是因为ByteArray表示字节数组,字节中融合编码表就是字符。因此ByteArrayInputStream和CharArrayInputStream对应 [3]. InputStream中的StringBufferInputStream和Reader中的StringReader对应 【对应的原因】就是StringBuffer类和String类本身就是前者是后者的缓冲区,可以转换。 [4]. 字节流没有转换流作为子类。转换流是字符流的特有子类。 [5]. 打印字节流PrintStream比较特殊,不是PrintOutputStream,结尾就是Stream。原因就是Print这个词本身就表示“打印”,就有向外输出的含义。 (3). 纵向比较II -----字节流和字符流继承体系结构的层次变动 [1]. FileInputStream和FileReader/FileOutputStream和FileWriter {1}. InputStream中FileInputStream是InputStream的直接子类。 {2}. 但是在Reader中确实InputStreamReader的直接子类。 {3}. 这个原因就是Reader操作文本数据,因此需要编码表,而InputStreamReader恰恰就是将InputStream+ 编码表融合之后生成需要的字符流,所以在Reader中FileReader就变成了第二级的子类存在。FileOutputWriter也是一样的道理。 [2]. BufferedInputStream和BufferedReader/BufferedOutputStream和BufferedWriter {1}. BufferedInputStream在InputStream中处于第三级别的子类,直接父类是FilterInputStream。 {2}. 但是对应的BufferedReader在Reader体系中处于第二级别的子类,直接和FilterReader并列。BufferedOutputStream道理也是一样的。 [2]. LineNumberInputStream和LineNumberReader {1}. LineNumberInputStream在InputStream处于第三级别的子类,直接父类是FilterInputStream。 {2}. 但是在Reader继承体系中,LineNumberReader层次仍然是第三级别子类,但是直接跟随BufferedReader脱离了FilterReader。
|