Java 字符流(处理文本数据)类图如下:
读取字符流 Reader:
主要采用了装饰模式,InputStreamReader采用适配器模式
写入字符流 Writer:
主要采用了装饰模式,OutputStreamWriter采用适配器模式
Reader和Writers是java1.1中加入的。设计Reader和Writer继承层次结构主要是为了国际化。老的IO流继承层次结构仅支持8位字节流,并且不能很好地处理16位的Unicode字符。
由于Unicode字符用于字符国际化,所以添加Reader和Writer继承结构体系是为了在所有的IO操作中都支持Unicode。另外,新类库的设计使得它的操作比旧类库更快。
字节流和字符流对应关系:
字节流 | 字符流 |
InputStream | Reader 适配器:InputStreamReader |
OutStream | Writer 适配器:OutputStreamWriter |
FileInputStream | FileReader |
FileOutputStream | FileWriter |
StringBufferInputStream(已弃用) | StringReader |
(无对应的类) | StringWriter |
ByteArrayInputStream | CharArrayReader |
ByteArrayOutputStream | CharArrayWriter |
PipedInputStream | PipedReader |
PipedOutputStream | PipedWriter |
其中过滤器类:
过滤器字节流 | 字符流 |
FilterInputStream | FilterReader |
FilterOutputStream | FilterWriter(抽象类,没有子类) |
BufferInputStream | BufferReader |
BufferOutputStream | BufferWriter |
DataInputStream |
|
PrintStream | PrintWriter |
LineNumberInputStream(已弃用) | LineNumberReader |
PushbackInputStream | PushbackReader |