flush问题
来源:互联网 发布:游戏出海 知乎 编辑:程序博客网 时间:2024/03/29 01:44
1. flush的问题
写程序的时候发现flush的位置不同的话会导致不同的输出结果,下面是一个小程序,就是向一个文件中输入数据:
package com.sxtscience.msb.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.Date;public class TestPrintStream3 {public static void main(String[] args) {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try {FileWriter fr = new FileWriter("D:\\My programs\\JAVA\\first application\\src\\com\\sxtscience\\msb\\io\\TestPrintStream.log", true);PrintWriter pw = new PrintWriter(fr);BufferedWriter bw = new BufferedWriter(fr);String line = null;while(!(line = br.readLine()).equalsIgnoreCase("exit")) {System.out.println(line.toUpperCase());pw.println("---" + line + "---");bw.write("---------------我是华丽的分割线---------------");bw.newLine();bw.flush();pw.flush();}//bw.flush(); //flush的书写位置会改变输出的结果,在每一次write之后都flush一下//pw.flush();pw.println("========" + new Date() + "=======");pw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
其中PaintWriter和BufferedWriter的对象的初始化都是用的是FileWriter的对象,在从控制台读入数据并进行打印和输入到文件的时候,如果把flush写在代码中注销的位置的话,
最终打印的结果为:
---cnads---
---vnaasfe---
---------------我是华丽的分割线---------------
---------------我是华丽的分割线---------------
========Mon Mar 11 17:24:21 CST 2013=======
说明在输出的时候都是用了缓冲区,pw和bw都进行了缓冲存储,所以循环结束后再调用flush就先把bw缓冲里的数据打印完,然后再把fw里的数据打印完。如果把flush语句拿
到循环的里面打印结果就正确了:
---nnadskncjkd---
---------------我是华丽的分割线---------------
---hauihei---
---------------我是华丽的分割线---------------
========Mon Mar 11 17:27:05 CST 2013=======
但是如果不加flush语句的话最终pw.print()可以打印到文件,但是bw.write()无法打印到文件:
---cadsjj---
---ere---
========Mon Mar 11 17:28:27 CST 2013=======
这个应该还是和BufferedWriter的缓冲机制有关系的,具体的实现细节还是有待继续研究····
未完待续···
- flush问题
- java-io-flush问题
- 问题:flush()与ob_flush()函数????
- out.flush(); out.close()问题
- flush ()
- flush( )
- flush
- flush()
- JAVA IO flush()方法问题
- 关于JAVA中流的flush问题
- MySQL Flush导致的等待问题
- mysql,连接缓存问题 flush hosts
- PHP flush 失效问题 (实时显示)
- TCP 编程时的 flush() 问题
- Nginx环境下flush失效问题
- flush tables with read lock的一个潜在问题
- 通过Response.Flush()实现IE下载失败的问题
- 解决Nginx环境下PHP的flush失效问题
- Object Recognition and Scene Understanding(四)OpenCV SVM+HOG分类
- ubuntu中Broadcom BCM4311 无线网卡驱动问题解决
- hadoop-1.1.1 eclipse插件编译
- Protobuf 的 SerializeToString 的输入参数不是string
- UC提速游戏战略:分成3亿追击腾讯
- flush问题
- Cordova2.0(既PhoneGap)中通过Plugin实现Java和JS代码互相调用
- javascript输出今天年份,日期,星期,当前时间
- sql 查询当天,本月,本周的记录
- ubuntu linux 如何用命令行设置日期时间 date 和默认时区
- 设置alertdialog 透明度
- commons-mail发送带附件,显示图片的邮件(图片保存在邮件服务器)
- C++实例 菜单操作
- NSString+NSMutableString+NSValue+NSAraay用法汇总