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 |