InputStream 与 OutputStream
在Java 1.0中,限定所有与输入有关的类都应继承于InputStream,所有与输出有关的类都应继承于OutputStream。
这些类的继承图可参看这里1。其中,FilterInputStream为decorator类提供基类,至于Decorator Design Pattern可参看ProgramCreek2。
Reader 与 Writer
Java 1.1对基本的I/O流进行了重大的修改,引入了Reader 与 Writer类,兼容Unicode与面向字符的I/O功能;同时InputStream 与 OutputStream在面向字节形式的I/O中仍有重要的应用。
有关Reader的类图可参看这里3。下面给出InputStream、 Reader的类继承图,OutputStrem与Writer的类继承图与之相似。
代码示例
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。