黑马程序员技术交流社区

标题: BufferedWriter写文件的时候为啥要调用flush()方法,作用是啥? [打印本页]

作者: abian    时间: 2013-8-1 22:22
标题: BufferedWriter写文件的时候为啥要调用flush()方法,作用是啥?
本帖最后由 abian 于 2013-8-1 22:27 编辑
  1. File srcFile = files[i];
  2.                                 // 创建字符输入流
  3.                                 reader = new BufferedReader(new FileReader(srcFile));
  4.                                 // 修改文件扩展名
  5.                                 String filename = srcFile.getName();
  6.                                 filename = filename.substring(0, filename.lastIndexOf(".") + 1)
  7.                                                 + "txt";
  8.                                 // 创建更改路径后和修改扩展名后的文件
  9.                                 File desFile = new File(des, filename);
  10.                                 // 创建字符输出流,然后复制文件到指定目录
  11.                                 writer = new BufferedWriter(new FileWriter(desFile));
  12.                                 String line = "";
  13.                                 while ((line = reader.readLine()) != null) {
  14.                                         writer.write(line);
  15.                                         writer.newLine();//换行

  16.                                 }
  17.                        writer.flush();//<span style="line-height: 1.5;">为啥写完之后要刷新一下缓存 他的作用是什么?</span>
复制代码

作者: sergio    时间: 2013-8-1 23:15
public void flush() throws IOException刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是:如果此输出流的实现已经缓冲了以前写入的任何字节,则调用此方法指示应将这些字节立即写入它们预期的目标。
如果此流的预期目标是由基础操作系统提供的一个抽象(如一个文件),则刷新此流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。   
这个是jdk6.0中描述。

作者: abian    时间: 2013-8-4 08:31
sergio 发表于 2013-8-1 23:15
public void flush()  throws IOException刷新此输出流并强制写出所有缓冲的输出字节。flush 的常规协定是 ...

学习了 谢谢




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