CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

例子看不懂了,为什么会出现象下面这样的对象创建方式?

楼主coolbird_cn(穿云鸟)2005-07-03 22:46:30 在 Java / J2SE / 基础类 提问

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

相关问题

  • 创建ADO对象
  • 不能创建FileSystemObject对象
  • 创建对象的问题
  • 创建对象失败??
  • vs.net创建对象问题!!!!!!!!!!!
  • 创建对象的问题
  • 对象创建问题
  • 创建Command对象异常
  • 未能创建“CDO.Message”对象?
  • 不能创建对象???

关键词

  • 字符
  • 数据
  • 转换
  • bufferedinputstream
  • datainputstream
  • 读取
  • fileinputstream
  • 参数
  • 构造
  • 方式

得分解答快速导航

  • 帖主:coolbird_cn
  • zyhowe
  • greenmars2004
  • humanity
  • congliu
  • kypfos

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo