【Java】I/O类库

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】I/O类库

【Java】I/O类库

代码示例

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


  1. Java Design Pattern: Adapter
  2. java io class hierarchydiagram
  3. Java Design Pattern: Decorator – Decorate your girlfriend
  4. Java I/O class diagram