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 |
InputStream | Reader |
OutputStream | Writer |
FileInputStream | FileReader |
FileOutputStream | FileWriter |
StringBufferInputStream | StringReader |
StringWriter | |
ByteArrayInputStream | CharArrayReader |
ByteArrayOutoutStream | CharArrayWriter |
PipedInputStream | PipedReader |
PipedOutputStream | PipedWriter |
大体上我们会发现,这两个不同的继承层次结构中的接口即使不能说完全相同,但也是非常相似。
二、更改流的行为
三、未发生变化的类