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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ifuzhen 中级黑马   /  2014-4-23 21:15  /  1257 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ifuzhen 于 2014-4-24 16:32 编辑

  1. import java.io.*;
  2. class Test
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 copyfile();
  7.         }

  8.         public static void copyfile()throws IOException
  9.         {
  10.                 //BufferedReader bufr =null;
  11.                 FileReader fr =null;
  12.                 LineNumberReader lnr =null;
  13.                 BufferedWriter bufw =null;
  14.                
  15.                 lnr =new LineNumberReader(fr =new FileReader("Test.java"));
  16.                 bufw =new BufferedWriter(new FileWriter("Testcopy.java"));
  17.                 String line=null;
  18.                 while((line=lnr.readLine())!=null)
  19.                 {
  20.                         //System.out.println(lnr.getLineNumber()+":"+line);
  21.                         bufw.write(lnr.getLineNumber());
  22.                         System.out.println(lnr.getLineNumber());//在控制台是可以正常显示行号的,到了文件中却显示不出来了??
  23.                         bufw.write(line);
  24.                         bufw.newLine();
  25.                         bufw.flush();
  26.                 }
  27.                
  28.         }
  29. }
复制代码

3 个回复

倒序浏览
本帖最后由 kuroro自走核炮 于 2014-4-23 22:24 编辑

  1. import java.io.*;
  2. class Test
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 copyfile();
  7.         }

  8.         public static void copyfile()throws IOException
  9.         {
  10.                 //BufferedReader bufr =null;
  11.                 FileReader fr =null;
  12.                 LineNumberReader lnr =null;
  13.                 BufferedWriter bufw =null;
  14.                
  15.                 lnr =new LineNumberReader(fr =new FileReader("Test.java"));
  16.                 bufw =new BufferedWriter(new FileWriter("Testcopy.java"));
  17.                 String line=null;
  18.                 while((line=lnr.readLine())!=null)
  19.                 {
  20.                         //System.out.println(lnr.getLineNumber()+":"+line);
  21.                         //bufw.write(lnr.getLineNumber());
  22.                         System.out.println(lnr.getLineNumber());//在控制台是可以正常显示行号的,到了文件中却显示不出来了??
  23. //这里直接输入的行号数字,被系统当作ASC码解析了

  24.                                                 
  25.                         bufw.write(lnr.getLineNumber()+"   "+line);//合到一句写就OK了。
  26.                         bufw.newLine();
  27.                         bufw.flush();
  28.                 }
  29.                
  30.         }
  31. }
复制代码

回复 使用道具 举报
@kuroro自走核炮;
有可能是重写导致,两句write放到一起确实可以,但是分开写行号竟然变成了符号?
难道和编码有关?
回复 使用道具 举报
ifuzhen 发表于 2014-4-23 22:08
@kuroro自走核炮;
有可能是重写导致,两句write放到一起确实可以,但是分开写行号竟然变成了符号?
难道和 ...

我刚才确认了一下,确实是编码问题……你直接用write写入行号,写进去的int值被系统用asc码给翻译了。你可以试下用原来的函数复制一个100行以上的文件试一下,立刻就能看出效果了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马