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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张健 中级黑马   /  2012-5-22 19:33  /  2640 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刷新数据到缓冲区里需要调用flush方法。
很想知道flush方法内部是怎么实现的,怎么把数据刷新到IO设备中的。
能不能自己自定义一个刷新方法。自己调用自己写的刷新方法;如果可以自定义,那么该怎么实现?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
需要刷新的流 字符流 和字节流的buffered流  它们刷新流里的数据最总调用的是  底层字节流的write 方法
回复 使用道具 举报
真的不太懂
回复 使用道具 举报
nailsoul 发表于 2012-5-22 20:13
需要刷新的流 字符流 和字节流的buffered流  它们刷新流里的数据最总调用的是  底层字节流的write 方法 ...

底层字节流的write 方法 ???
求详解
回复 使用道具 举报
new BufferedWriter(new FileWriter("1.text"));  bufferedWriter flush 调用的是FileWriter的write 方法的flush方法  write的flush方法调用的是outputStreamWriter的write方法 oputstreamWriter的writer方法调用的是StreamEncoder的write方法  StreamEncoder怎么实现的就不知道了 没反编译该文件。。。   不过这个类需要用到跟设备打交道的输出流 在这里用到的是FileOutputStream    FileWriter类的作用只是充当一把锁。。。实现同步时就用下它。。
new BufferedOutputStream(new FileOutputStream);Buffered流的flash方法调用 的是FileOutputStream的write方法该方法是个本地方法 调用的是windowsAPI

JAVA 的IO体系就是用装饰设计模式实现的 很多流都是相对底层流的包装流。。。 在字节流体系中 如果跟硬盘打交道调用系统API的是FileOutputStream  而在字符流中调用StreamEncoder类的类是OutputStreamWriter   
回复 使用道具 举报
这个问题我是这样理解的:
在I/o设备中
如。bufferedWrite  bd=new bufferedWrite (new  Filewrite("xxx.txt"));
将读取的数据写入文本("xxx.txt")中时,可以自己写刷新方法
bd.flush();
我们还可以用打印流Printstream流的写入流printwrite;
printwrite   pw=new printwrite(new  Filewrite("xxx.txt"),true);//true表示刷新,false表示不刷新
pw.println();这个我感觉用时比较方面。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马