对于你这个问题,如果你是由键盘输入,读入文件,不容易发现flush与close的区别的。我想楼主也不够仔细吧,就从你这个方法说吧:清空test2里面的数据,运行程序,输入一行数据,再去看test里面的变化,最后over结束。注释bufw.flush()。再次清空test文件(只是为了你看着比较方便而已),运行程序,看看test里面的变化,最后over,我想这样说你应该懂了吧,flush是读一行就往test里面写入一一行,而close是知道遇到over才往test里面写。给出一个比较明显的实例:
- import java.io.*;
- public class Demo1 {
- public static void main(String[] args) throws IOException {
- /*
- * 获取键盘录入数据,并保存在硬盘上。
- */
-
- //读取键盘。
- BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
- BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
- //将目的从文件转移到控制台
- //读取目的。
- // BufferedWriter bufw = new BufferedWriter(new FileWriter("test2.txt"));
-
- String line = null;
- while((line=bufr.readLine())!=null){
- bufw.write(line.toUpperCase());
- bufw.newLine();
- bufw.flush();
- //运行两次,一次注释bufw.flush(),一次不注释,一目了然。
- if("over".equals(line)){
- break;
- }
- }
-
- bufw.close();
- bufr.close();
- }
- }
复制代码
|