在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。圖片