在Java 1.0中,限定全部与输入有关的类都应继承于InputStream,全部与输出有关的类都应继承于OutputStream。java
这些类的继承图可参看这里1。其中,FilterInputStream为decorator类提供基类,至于Decorator Design Pattern可参看ProgramCreek2。jsp
Java 1.1对基本的I/O流进行了重大的修改,引入了Reader 与 Writer类,兼容Unicode与面向字符的I/O功能;同时InputStream 与 OutputStream在面向字节形式的I/O中仍有重要的应用。spa
有关Reader的类图可参看这里3。下面给出InputStream、 Reader的类继承图,OutputStrem与Writer的类继承图与之类似。code
java.io.InputStreamReader(InputStream) (returns a Reader) java.io.OutputStreamWriter(OutputStream) (returns a Writer)
上面的代码表示经过InputStream返回一个Reader,用到了Adapter Design Pattern4。继承
//System.in is an InputStream object BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); //txt file as input BufferedReader input = new BufferedReader(new FileReader("test.txt"));
BufferedReader对读入的文件进行缓冲。上面的代码用到了Decorator Design Pattern2。图片