A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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.     }

复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
//在这里要对写入的东西进行刷新因为它还在缓冲区,并没有写入到txt文件中,所以readLine为null
bw.flush();//加上这句就好了
while(br.ready()){
            bw2.write(br.readLine());
        }
回复 使用道具 举报
java的换行符是\r\n”;Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;
readLine为null是因为数还在缓冲区里面,要进行刷新才行。close虽然也进行刷新,但是在关闭前,所以s1.txt中有数据。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马