黑马程序员技术交流社区

标题: 关于输入和输出流的调用,同学们帮我看看哪里出问题了 [打印本页]

作者: 王海龙    时间: 2012-12-22 12:57
标题: 关于输入和输出流的调用,同学们帮我看看哪里出问题了
  1. public static void main(String[] args) throws IOException {

  2.         FileWriter fw = new FileWriter("c:/s1.txt");
  3.         BufferedWriter bw = new BufferedWriter(fw);
  4.         FileReader fr = new FileReader("c:/s1.txt");
  5.         BufferedReader br = new BufferedReader(fr);
  6.         FileWriter fw2 = new FileWriter("c:/s2.txt");
  7.         BufferedWriter bw2 = new BufferedWriter(fw);
  8.          
  9.          bw.write("明月几时有,把酒问青天。");

  10. //尝试将这一句改为 bw.write("明月几时有,把酒问青天。\n");
  11. //却没有实现换行,为什么?

  12.          bw.newLine();
  13.          bw.write("不知天上宫阙,今夕是何年。");

  14.         System.out.println("Copying in progress......");

  15.         while(br.ready()){
  16.             bw2.write(br.readLine());
  17.         }
  18. //通过上面的循环,本意是将s1.txt中的文字复制到s2.txt中的,结果,发现s2文件为空!!
  19. //经过调试发现,原来br.readline()竟然为null!!为什么??
  20.         System.out.println("Success!");

  21.         bw.close();
  22.         fw.close();
  23.         fr.close();
  24.         br.close();
  25.         bw2.close();
  26.         fw2.close();
  27.     }

复制代码

作者: 种生祥    时间: 2012-12-22 13:30
//在这里要对写入的东西进行刷新因为它还在缓冲区,并没有写入到txt文件中,所以readLine为null
bw.flush();//加上这句就好了
while(br.ready()){
            bw2.write(br.readLine());
        }
作者: 王进亮    时间: 2012-12-22 14:19
java的换行符是\r\n”;Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;
readLine为null是因为数还在缓冲区里面,要进行刷新才行。close虽然也进行刷新,但是在关闭前,所以s1.txt中有数据。




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