黑马程序员技术交流社区

标题: 关于IO流中的flush方法 [打印本页]

作者: 黑马张健    时间: 2012-5-22 19:33
标题: 关于IO流中的flush方法
刷新数据到缓冲区里需要调用flush方法。
很想知道flush方法内部是怎么实现的,怎么把数据刷新到IO设备中的。
能不能自己自定义一个刷新方法。自己调用自己写的刷新方法;如果可以自定义,那么该怎么实现?
作者: 黑马罗坚    时间: 2012-5-22 20:13
需要刷新的流 字符流 和字节流的buffered流  它们刷新流里的数据最总调用的是  底层字节流的write 方法
作者: 李红飞    时间: 2012-5-23 09:05
真的不太懂
作者: 潘东升    时间: 2012-5-23 10:22
nailsoul 发表于 2012-5-22 20:13
需要刷新的流 字符流 和字节流的buffered流  它们刷新流里的数据最总调用的是  底层字节流的write 方法 ...

底层字节流的write 方法 ???
求详解
作者: 黑马罗坚    时间: 2012-5-24 18:03
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   

作者: 崔陈喜    时间: 2012-5-24 21:46
这个问题我是这样理解的:
在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();这个我感觉用时比较方面。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2