Java I/O 系统 (四)
Reader和Writer
?
当我们初次看见Reader和Writer类时,可能会以为这是两个用来替代InpuStream和OutputStream的类,但实际上并非如此,尽管一些原始的流类不在被使用,但是InpuStream和OutputStream在面向字节形式的I/O中仍可以提供极有价值的功能。Reader和Writer则提供兼容Unicode与面向字符的I/O功能。
?
一、数据的来源和去处
几乎所有的原始的Java I/O流类都有相应的Reader和Writer类来提供天然的Unicode操作。然后在某些场合,面向字节的InputStream和OutputStream才是正确的解决方案;特别是,java.util.zip类库就是面向字节而不是字符。因此,最明智的做法是尽量尝试使用Reader和Writer,一旦程序代码无法成功编译,我们就会发现自己不得不使用面向字节的类库。
?
来源于去处 Java1.0相应的 Java1.1??InputStreamReader??OutputStreamWriter??FileInputStreamFileReader??FileOutputStreamFileWriter??StringBufferInputStreamStringReader??StringWriter?ByteArrayInputStream?CharArrayReader?ByteArrayOutoutStream?CharArrayWriter??PipedInputStreamPipedReader??PipedOutputStreamPipedWriter??
大体上我们会发现,这两个不同的继承层次结构中的接口即使不能说完全相同,但也是非常相似。
?
二、更改流的行为
?
三、未发生变化的类