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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于世德 中级黑马   /  2013-7-12 12:54  /  1156 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileOutputStream中有个write(byte[] buf)方法,该方法内部会调用flush()方法,而FileWriter中的write(char[] buf)内部中没有调用flush()方法,类库的设计者为什么要这样设计呢?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
因为FileOutputStream继承自OutputStream ,所以拥有父类OutputStream的这个方法,该类是直接操作字节数据的,没用到缓存技术,所以也不用覆写flush()方法,而FileWrite操作的是字符数据,因为字符代表了两个字节,此处有缓存技术,所以它就要flush()了,希望对你有帮助。
回复 使用道具 举报
在乎.. 发表于 2013-7-12 13:08
因为FileOutputStream继承自OutputStream ,所以拥有父类OutputStream的这个方法,该类是直接操作字节数据 ...

为啥操作字节就不用缓存技术了呢?不太明白
回复 使用道具 举报
于世德 发表于 2013-7-12 13:23
为啥操作字节就不用缓存技术了呢?不太明白

我不是说操作字节流就不用flush()哦,我的理解是,FileOutputStream中的flush方法继承自OutputStream而并没有复写,在OutputStream中的flush方法是空方法体,OutputStream有flush方法的原因是它不FileOutputStream一个子类,当你是用FileOutputStream一个字节一个字节存,不用缓存技术了吧! 就像杯子装自来水,自来水都一滴一滴地流,你需要用杯子接吗?而Bufferedoutputstream用到了缓存技术,它不是一个字节一个字节地接水,因此OutputStream是 提供这个方法的,只是有些类用到,有些类没有用到(没有复写)而已。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
在乎.. 发表于 2013-7-12 13:34
我不是说操作字节流就不用flush()哦,我的理解是,FileOutputStream中的flush方法继承自OutputStream而并 ...

哦,明白一点了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马