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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ljhheima 中级黑马   /  2012-11-25 10:33  /  2013 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果你对BufferedWriter不太了解的话先看我发的  
《 很多人不理解的BufferedWriter》
http://bbs.itheima.com/forum.php?mod=viewthread&tid=32025&fromuid=54361

当BufferedWriter调用flush时,是否还需要调用FileWriter的flush?
1.还需要调用,因为只是将BufferedWriter中的字符编码转成一定字符集的字节编码,数据还在FileWriter的缓冲区中。
2.不需要调用,因为BufferedWriter已经自动调用FileWriter的flush函数,将FileWriter缓冲区数据存进外存中。

两种方法的优点
方法一:使程序员对缓冲区的操作更灵活。
方法二:简化操作,使程序员对缓冲区的操作更容易。

于是我写下了下面的代码。

package jisu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class haha
{
public static void main(String[] args) throws IOException
{
  FileReader fr =new FileReader ("E:\\feiche.txt");
  FileWriter fw =new FileWriter ("D:\\abc.text");
  BufferedWriter bw=new  BufferedWriter(fw);
  BufferedReader br=new  BufferedReader(fr);
  int len=0;
  char []cbuf=new char[1024];
  len=br.read(cbuf);
  while(len!=-1)
  {
   bw.write(cbuf,0, len);
   len=br.read(cbuf);
  }
  br.close();
  fr.close();
  bw.flush();
}
}

  
  /*
   * 可以看到文件中已经能看到我们写入的数据。
   * */


当我们不调用BufferedWriter的flush;只调用FileWriter的flush时,我们看不到我们写入的数据,这是因为BufferedWriter没有调用编码转换器,数据还在BufferedWriter缓冲区中。

1 个回复

倒序浏览
不错,看一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马