黑马程序员技术交流社区

标题: 带行号的复制文件,行号怎么不出来 [打印本页]

作者: ifuzhen    时间: 2014-4-23 21:15
标题: 带行号的复制文件,行号怎么不出来
本帖最后由 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. }
复制代码

作者: kuroro自走核炮    时间: 2014-4-23 21:32
本帖最后由 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. }
复制代码


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

我刚才确认了一下,确实是编码问题……你直接用write写入行号,写进去的int值被系统用asc码给翻译了。你可以试下用原来的函数复制一个100行以上的文件试一下,立刻就能看出效果了!




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