修改数据流的行为 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-26
|
修改数据流的行为
时间:2007-05-29 yycnet.yeah.net yyc译
在Java 1.0中,数据流通过FilterInputStream和FilterOutputStream的“装饰器”(Decorator)子类适应特定的需求。Java 1.1的IO流沿用了这一思想,但没有继续采用所有装饰器都从相同“filter”(过滤器)基础类中衍生这一做法。若通过观察类的层次结构来理解它,这可能令人出现少许的困惑。在下面这张表格中,对应关系比上一张表要粗糙一些。之所以会出现这个差别,是由类的组织造成的:尽管BufferedOutputStream是FilterOutputStream的一个子类,但是BufferedWriter并不是FilterWriter的子类(对后者来说,尽管它是一个抽象类,但没有自己的子类或者近似子类的东西,也没有一个“占位符”可用,所以不必费心地寻找)。然而,两个类的接口是非常相似的,而且不管在什么情况下,显然应该尽可能地使用新版本,而不应考虑旧版本(也就是说,除非在一些类中必须生成一个Stream,不可生成Reader或者Writer)。
Filters:Java 1.0 class
|
Corresponding Java 1.1 class
|
FilterInputStream
|
FilterReader
|
FilterOutputStream
|
FilterWriter (abstract class with no subclasses)
|
BufferedInputStream
|
BufferedReader(also has readLine())
|
BufferedOutputStream
|
BufferedWriter
|
DataInputStream
|
use DataInputStream(Except when you need to use readLine(), when you should use a BufferedReader)
|
PrintStream
|
PrintWriter
|
LineNumberInputStream
|
LineNumberReader
|
StreamTokenizer
|
StreamTokenizer(use constructor that takes a Reader instead)
|
PushBackInputStream
|
PushBackReader
|
过滤器:Java 1.0类 对应的Java 1.1类FilterInputStream FilterReaderFilterOutputStream FilterWriter(没有子类的抽象类)BufferedInputStream BufferedReader(也有readLine())BufferedOutputStream BufferedWriterDataInputStream 使用DataInputStream(除非要使用readLine(),那时需要使用一个BufferedReader)PrintStream PrintWriterLineNumberInputStream LineNumberReaderStreamTokenizer StreamTokenizer(用构建器取代Reader)PushBackInputStream PushBackReader有一条规律是显然的:若想使用readLine(),就不要再用一个DataInputStream来实现(否则会在编译期得到一条出错消息),而应使用一个BufferedReader。但除这种情况以外,DataInputStream仍是Java 1.1 IO库的“首选”成员。为了将向PrintW |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|