ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 数据的来源和去处 几乎所有原始的 Java I/O 流类都有相应的 `Reader` 和 `Writer` 类来提供原生的 Unicode 操作。但是在某些场合,面向字节的 `InputStream` 和 `OutputStream` 才是正确的解决方案。特别是 `java.util.zip` 类库就是面向字节而不是面向字符的。因此,最明智的做法是尽量**尝试**使用 `Reader` 和 `Writer`,一旦代码没法成功编译,你就会发现此时应该使用面向字节的类库了。 下表展示了在两个继承体系中,信息的来源和去处(即数据物理上来自哪里又去向哪里)之间的对应关系: | 来源与去处:Java 1.0 类 | 相应的 Java 1.1 类 | | :-------------------: | :--------------: | | `InputStream` | `Reader` <br/> 适配器:`InputStreamReader` | | `OutputStream` | `Writer` <br/> 适配器:`OutputStreamWriter` | | `FileInputStream` | `FileReader` | | `FileOutputStream` | `FileWriter` | | `StringBufferInputStream`(已弃用) | `StringReader` | | (无相应的类) | `StringWriter` | | `ByteArrayInputStream` | `CharArrayReader` | | `ByteArrayOutputStream` | `CharArrayWriter` | | `PipedInputStream` | `PipedReader` | | `PipedOutputStream` | `PipedWriter` | 总的来说,这两个不同的继承体系中的接口即便不能说完全相同,但也是非常相似的。