A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙漠里的小鱼 黑马帝   /  2012-2-16 01:43  /  2158 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileWiter fw =new FileWriter("buf.txt") ;
BufferedWiter bufw =new  BufferedWiter(fw);
我的疑惑就是先创建一个流  FileWiter fw =new FileWriter("buf.txt") ;
那第二个创建的流为什么不是 BufferedWiter fw =new  BufferedWiter("buf.txt") ; 为什么是BufferedWiter bufw =new  BufferedWiter(fw);
而且BufferedWiter bufw =new  BufferedWiter(fw);中的小括号fw是FileWiter fw =new FileWriter("buf.txt") ;这个中的fw

评分

参与人数 1技术分 +1 收起 理由
技术测试刘老师 + 1 基础问题啊,考验基本功了.

查看全部评分

12 个回复

倒序浏览
本帖最后由 李杨 于 2012-2-16 02:25 编辑

FileWriter是向字符文件写入数据,BufferedWiter 是加以缓冲字符数据,

你问的第二个创建的流为什么不是 BufferedWiter fw =new  BufferedWiter("buf.txt") ;首先你需要知道BufferedWiter的参数列表里应该是什么?是Writer的子类,应用到了多态,因为FileWiter间接继承了Writer这个抽象类 。BufferedWiter不能直接打开文件,它只能给已经打开的文件写入缓冲流,就是BufferedWiter增强了FileWriter的功能,你的FileWriter才能与文件打交道。

这种功能的递增,就是装饰模式,JavaIO用的就是装饰模式。
装饰模式实现不同细节的功能,想要强大的功能或者低效的功能随便你来装饰。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
沙漠里的小鱼 + 2 赞一个!
技术测试刘老师 + 1

查看全部评分

回复 使用道具 举报
缓冲区是用来提高效率的。BufferedWriter中的读取方法其实是使用了FileWriter中的读取方法,所以要把FileWriter对象穿进去

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
沙漠里的小鱼 + 2 赞一个!
技术测试刘老师 + 1

查看全部评分

回复 使用道具 举报
李杨 发表于 2012-2-16 02:23
FileWriter是向字符文件写入数据,BufferedWiter 是加以缓冲字符数据,

你问的第二个创建的流为什么不是 B ...

讲的不错 谢谢 可是我还是不大明白啊  
回复 使用道具 举报
mnisummer 发表于 2012-2-16 08:50
缓冲区是用来提高效率的。BufferedWriter中的读取方法其实是使用了FileWriter中的读取方法,所以要把FileWr ...

兄弟 能讲的在具体点吗
回复 使用道具 举报
既然这样那就杀人了!!!!!!!!

话说在公园200年的时候,一个名字叫小鱼的武林高手得了忧郁症。话说在200年的忧郁症都是这样的特征,武林高手去杀人,而杀死的人都表现为开心,大闹,疼痛,抽风等表现,死法太多,一些武林高手时刻都在想我是武林高手哇,我一剑你就得死,声都不能出,这才叫痛快。所以不想看到临死前的人有这么表现,而想看到一命呜呼的崇高死法,这就是200年的忧郁症了。


小鱼的病情已经到了晚期,后来有个名字叫 李仙儿的算命大师就出现了,他对小鱼说:

小鱼你别伤心了,有你李哥在,大师就说了,,就说了啊,,不是结巴啊。。小鱼你听好了。

要想那人死的快,容易啊 。。。我教你个招,这招让人一剑致命不死都不原谅自己的招数,这招叫做“装饰模式”, 此招可用在剑上,刀上,,就是刀枪棍棒,,斧钺钩叉上面都可以是使用此招,,记住了装饰模式。。

后来小鱼很高兴,大师您go on吧,大师你先去拿你的剑去杀个人我看你伸手如何,小鱼就拿着它宠爱的剑去杀人了,走着走着,唉,看到个人,先打声招呼,你好!只见小鱼伸手敏捷,一剑刺去,只见那人很开心的说你剑法不行啊,小鱼傻了,看那个人这么高兴,怎么回事啊,,过了1个小时,那人高兴过度死亡,死亡时间 200年一个阳光明媚的早晨。

后来小鱼不是很满意的说,李叔啊,那人头死很开心啊,还一度的嘲笑我。我说啊,小鱼你别着急,我现在就告诉你崇高的招数,装饰模式,我说这有瓶蒙汗药你擦在剑上,然后去杀人,小鱼听到了这招貌似可行,我试试看,小鱼在剑上擦了蒙汗药后又去杀人了,唉,看到了一个人,小鱼上来搭讪说,去哪啊?那人说我去的地方挺远的在西边就过那个山头就到了,这时小鱼指着树上说,看那是什么,那人一回头看树的瞬间小鱼一剑刺去,只见那人晕乎乎的走了几步说你这叫杀人吗,你到大点劲儿啊,小鱼傻了,看着那人,过了30分钟,那人说我睡一会啊,天黑你叫我,后天那人就睡过去了。。

小鱼还是不满说李叔啊,这招效率低啊,我说我这还有,这瓶你看,,这瓶是我用板蓝根+白开水+Coke研制而成,在深海里埋了70年才酿制成功,味道不错。给了小鱼,小鱼擦在了剑上,去杀人了,看到一头牛,哇塞,,呵呵,,你好壮啊。。小鱼匍匐到牛的身边,还假装牛叫,还向牛放了电,后来就在一瞬间,牛没有hold住,小鱼一剑刺去,只见牛好发无损的糖躺在了草地上,身上放这光芒。。

小鱼很高兴,说原来这就是装饰模式,

在剑上擦上多种强力毒药,毒性越来越强,杀人才high。装饰模式的威力就是大啊。。

过了9×9=81天出现了武林盟主,此人名字就做小鱼。。
回复 使用道具 举报
foxpeter 黑马帝 2012-2-16 20:28:37
7#
毕向东老师基础课程第19天 有详细的讲这个问题和装饰设计模式 BufferedWriter只是起到装饰的作用,对FileWriter的功能实现加强。
就像手机套一样 , 可以使手机更美观,更强的保护, 但是你总要先有一个手机,才能用手机套套上去吧。

评分

参与人数 1黑马币 +2 收起 理由
沙漠里的小鱼 + 2 赞一个!

查看全部评分

回复 使用道具 举报
李杨 发表于 2012-2-16 02:23
FileWriter是向字符文件写入数据,BufferedWiter 是加以缓冲字符数据,

你问的第二个创建的流为什么不是 B ...

兄弟 能讲的在详细点吗
回复 使用道具 举报
李杨 黑马帝 2012-2-16 21:28:11
9#
我给你发,发不了了。说要通过审核。。。。
回复 使用道具 举报
mnisummer 发表于 2012-2-16 08:50
缓冲区是用来提高效率的。BufferedWriter中的读取方法其实是使用了FileWriter中的读取方法,所以要把FileWr ...

兄弟 举个例子说明一下啊
回复 使用道具 举报
是从源码那里看到的,毕老师的视频那里有介绍,使用了装饰模式
回复 使用道具 举报
沙漠里的小鱼 发表于 2012-2-17 18:05
兄弟 举个例子说明一下啊

是从源码那里看到的,毕老师的视频那里有介绍,使用了装饰模式
回复 使用道具 举报
装饰类 BufferedWiter 功能也是写入数据故要继承Write,装饰后其功能增强了,构造方法中要传入一个写入流。
可以理解为  装饰类 (BufferedWiter)  的作用是为传入的 XX(fw) 增强的其功能的类,所以提前要传入一个流



PS:那第二个创建的流为什么不是 BufferedWiter fw =new  BufferedWiter("buf.txt") ; 为什么是BufferedWiter bufw =new  BufferedWiter(fw);

API中 BufferedWiter类的构造函数没有关联到文件("buf.txt") 的构造器,你理解错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马