例子看不懂了,为什么会出现象下面这样的对象创建方式?
DataInputStream in5 =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("Data.txt")));
这个构造器是为了表达什么意思?
问题点数:40、回复次数:12Top
1 楼zyhowe(★☆偶然的天空☆★)回复于 2005-07-03 22:50:06 得分 5
只是因为不能直接new,要通过中介
Top
2 楼greenmars2004(火球)(业余程序员)(我会的不多,不过都可以告诉你)回复于 2005-07-03 22:50:24 得分 5
流嵌套构造,读取文件内容Top
3 楼humanity(城市边缘的狼)回复于 2005-07-03 23:13:27 得分 15
new FileInputStream("Data.txt");
是最基本的读取数据的流, 其他的流都不能直接访问数据,而只是对读取过程或者读取到的数据进行加工, 外面2层 流都是过滤器, 并不能直接读取数据, 需要把这个取数据的任务转交给 FileInputStream 完成,new BufferedInputStream 负责对数据进行缓冲,new DataInputStream 负责将 数据以 字节方式转换成以字符方式处理。
读取字节 缓冲读取到的字节 转换成字符流
FileInputStream------->BufferedInputStream---------------->DataInputStream-------->
由此构成 过滤管道, 后面2个因为没有数据来源而转发请求给前面的,所以构造时需要一个能读到数据的流作为参数。
Top
4 楼samepoint(猪样年华)回复于 2005-07-04 01:23:41 得分 0
透彻Top
5 楼coolbird_cn(穿云鸟)回复于 2005-07-05 13:25:21 得分 0
也就是说,如果要读取成字符流(是否就是返回到屏幕上,让我们能看的字符),就必须用这种形式来转换?那我们输入的字符是否也需要通过近似的方法,让机器“看懂”?Top
6 楼coolbird_cn(穿云鸟)回复于 2005-07-06 23:10:06 得分 0
顶一下Top
7 楼whyandwhat(石清)回复于 2005-07-07 08:53:40 得分 0
UPTop
8 楼congliu(取次花丛都不顾,半缘修道半缘君。)回复于 2005-07-07 09:57:57 得分 10
这是设计模式中的装饰模式(Decorator)。一个类是另外一个类的初始化参数。
这样的好处是:
用DataInputStream,BufferedInputStream和 FileInputStream就能组合出他们组成的所有组合,例如:
DataInputStream+BufferedInputStream
BufferedInputStream+FileInputStream
DataInputStream+BufferedInputStream+FileInputStream
DataInputStream+FileInputStream+BufferedInputStream
。。。
但如果不用这方法来达到这效果,必须写很多的类来实现,不简洁Top
9 楼kypfos(不在寻梦)回复于 2005-07-07 10:00:01 得分 5
DataInputStream in5 =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("Data.txt")));
new DataInputStream的时候需要一个BufferedInputStream参数,那就new 一个BufferedInputStream对像,而new BufferedInputStream需要一个FileInputStream对像参数,那就new 一个FileInputStream象了Top
10 楼huangdeji(活着就是等死)回复于 2005-07-07 10:19:27 得分 0
流Top
11 楼Aqiuye(路独行yyq)回复于 2005-07-07 10:28:24 得分 0
数据包装!Top
12 楼djl0122(骊龙)回复于 2005-07-07 10:28:32 得分 0
上面的高手,谢了。Top




