- 写在前面的话
- 引言
- 第 1 章 对象入门
- 第 2 章 一切都是对象
- 第 3 章 控制程序流程
- 第 4 章 初始化和清除
- 第 5 章 隐藏实施过程
- 第 6 章 类再生
- 第 7 章 多形性
- 第 8 章 对象的容纳
- 第 9 章 违例差错控制
- 第 10 章 Java IO 系统
- 第 11 章 运行期类型鉴定
- 第 12 章 传递和返回对象
- 第 十三 章 创建窗口和程序片
- 第 14 章 多线程
- 第 15 章 网络编程
- 第 16 章 设计范式
- 第 17 章 项目
- 附录 A 使用非 JAVA 代码
- 附录 B 对比 C++和 Java
- 附录 C Java 编程规则
- 附录 D 性能
- 附录 E 关于垃圾收集的一些话
- 附录 F 推荐读物
10.7.2 修改数据流的行为
在 Java 1.0 中,数据流通过 FilterInputStream 和 FilterOutputStream 的“装饰器”(Decorator)子类适应特定的需求。Java 1.1 的 IO 流沿用了这一思想,但没有继续采用所有装饰器都从相同“filter”(过滤器)基础类中衍生这一做法。若通过观察类的层次结构来理解它,这可能令人出现少许的困惑。
在下面这张表格中,对应关系比上一张表要粗糙一些。之所以会出现这个差别,是由类的组织造成的:尽管 BufferedOutputStream 是 FilterOutputStream 的一个子类,但是 BufferedWriter 并不是 FilterWriter 的子类(对后者来说,尽管它是一个抽象类,但没有自己的子类或者近似子类的东西,也没有一个“占位符”可用,所以不必费心地寻找)。然而,两个类的接口是非常相似的,而且不管在什么情况下,显然应该尽可能地使用新版本,而不应考虑旧版本(也就是说,除非在一些类中必须生成一个 Stream,不可生成 Reader 或者 Writer)。
Filters: | Corresponding Java 1.1 class |
---|---|
FilterInputStream | FilterReader |
FilterOutputStream | FilterWriter ( abstract class with no subclasses) |
BufferedInputStream | BufferedReader |
BufferedOutputStream | BufferedWriter |
DataInputStream | use DataInputStream |
PrintStream | PrintWriter |
LineNumberInputStream | LineNumberReader |
StreamTokenizer | StreamTokenizer |
PushBackInputStream | PushBackReader |
过滤器:Java 1.0 类 对应的 Java 1.1 类
FilterInputStream FilterReader
FilterOutputStream FilterWriter(没有子类的抽象类)
BufferedInputStream BufferedReader(也有 readLine())
BufferedOutputStream BufferedWriter
DataInputStream 使用 DataInputStream(除非要使用 readLine(),那时需要使用一个 BufferedReader)
PrintStream PrintWriter
LineNumberInputStream LineNumberReader
StreamTokenizer StreamTokenizer(用构建器取代 Reader)
PushBackInputStream PushBackReader
有一条规律是显然的:若想使用 readLine(),就不要再用一个 DataInputStream 来实现(否则会在编译期得到一条出错消息),而应使用一个 BufferedReader。但除这种情况以外,DataInputStream 仍是 Java 1.1 IO 库的“首选”成员。
为了将向 PrintWriter 的过渡变得更加自然,它提供了能采用任何 OutputStream 对象的构建器。PrintWriter 提供的格式化支持没有 PrintStream 那么多;但接口几乎是相同的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论