如果你对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缓冲区中。
|
|