换行和flush()

在尝试使用BufferedReader的readLine方法读出每一行数据,再用FileWriter依次写到文件里的时候,用了下面的代码段:

 1             fr = new FileReader("c:/from.txt");
 2             fw = new FileWriter("c:/to.txt");
 3             br = new BufferedReader(fr);
 4             String line = null ; 
 5             while(true)
 6             {
 7                 line = br.readLine();
 8                 if(line == null)
 9                     break ; 
10                 line+="\r\n";
11                 //System.out.println(line);
12                 fw.write(line , 0 , line.length());
13                 fw.flush();
14             }

 

首先,注意到第10行如果没有

line+="\r\n";

的话,就会出现每遇到一个换行符输出的时候只空3格的情况。

(参考http://blog.csdn.net/liangoo7/article/details/7882773)

另外,在fw.write()的第一个参数里把line写成line+"\r\n"也是不能实现换行的,依旧是空3格,不知为何。

 

另外,注意到fw.flush()语句,没有这句话无法输出数据,不知为何。。网上解释是“ flush() 是把缓冲区的数据强行输出”。

慢慢研究。

 --------------------------Nov.1----------

1.读了http://blog.csdn.net/superjunjin/article/details/8187315并且参考课本,发现flush()方法可以刷新缓冲区,在用缓冲流(BufferedReader/BufferedWriter)的时候常常是必不可少的。

 

2.另外,上面的换行如果用BufferedWriter来写,还可以调用newLine()方法。

(end)

posted @ 2013-10-31 16:28  LarryLawrence  阅读(733)  评论(0编辑  收藏  举报