当前位置: 代码迷 >> J2SE >> Writer的flush()步骤,深究
  详细解决方案

Writer的flush()步骤,深究

热度:62   发布时间:2016-04-23 20:37:36.0
Writer的flush()方法,深究
知道是把缓存中的内容读入读出。但是了解不是很具体。以写为例,

package com.donghe.package1;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class Writer {

public static void main(String[] args) {
BufferedWriter fw =null;
try {
fw =  new BufferedWriter(new FileWriter("e:\\test.txt"));
fw.write("wo shi lucky girl.");
//fw.flush();
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

/fw.flush();这句有和无并不影响输出结果,不太明白词句是否必要。
------解决方案--------------------
引用:
缓冲区中的数据保存直到缓冲区满后才写出,也可以使用flush方法将缓冲区中的数据强制写出或使用close()方法关闭流,关闭流之前,缓冲输出流将缓冲区数据一次性写出。lz的例子中,flash()和close()都使数据强制写出,所以两种结果是一样的,如果都不写的话,会发现不能成功写出


FileOutPutStream继承outputStream,并不提供flush()方法的重写
所以无论内容多少write都会将二进制流直接传递给底层操作系统的I/O,flush无效果
而Buffered系列的输入输出流函数单从Buffered这个单词就可以看出他们是使用缓冲区的
应用程序每次IO都要和设备进行通信,效率很低,因此缓冲区为了提高效率,当写入设备时,先写入缓冲区,等到缓冲区有足够多的数据时,就整体写入设备
  相关解决方案