黑马程序员技术交流社区

标题: 关于IO流 为什么下面的程序只能执行一半呢? [打印本页]

作者: 王海龙    时间: 2012-12-22 13:06
标题: 关于IO流 为什么下面的程序只能执行一半呢?
  1.     public static void main(String[] args) throws IOException {

  2.         BufferedWriter bw = new BufferedWriter(new FileWriter("c:/s1.txt"));
  3.         BufferedReader br = new BufferedReader(new FileReader("c:/s1.txt"));
  4.         Scanner input = new Scanner(System.in);

  5.         while (true) {
  6.             System.out
  7.                     .println("Please input a sentence(input \"end\" to exit):");
  8.             String str = input.nextLine();
  9.             if (str.toUpperCase().equals("END")) {

  10.                 break;
  11.             }
  12.             bw.write(str.toUpperCase());
  13.             bw.newLine();

  14.         }

  15. //到这里时,运行正确,文件写入内容也符合预期,但是下面的读取操作却没有返回任何结果,为什么?

  16.         String str = "";
  17.         while ((str = br.readLine()) != null) {
  18.             System.out.println(str);        }
  19. //或者使用如下代码
  20.                   //while(br.ready()){
  21.         //    System.out.println(br.readLine());
  22.         //}
  23. //这样写正确吗?
  24.         bw.close();
  25.         br.close();

  26.     }
复制代码

作者: 彭宾    时间: 2012-12-22 16:51
   bw.write(str.toUpperCase());

       bw.newLine();
在中间加上bw.flush();前面你虽然看到了结果写进去了,那是因为你后面的br.close()的效果,在这之前,数据一直都在缓冲区中所以你读不到。




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