黑马程序员技术交流社区

标题: 关于为文本文件加行号的问题 [打印本页]

作者: 王志明    时间: 2012-7-24 18:31
标题: 关于为文本文件加行号的问题
本帖最后由 Mrng8888 于 2012-7-25 00:14 编辑
  1. package test1;

  2. import java.io.*;
  3. import java.util.*;

  4. public class MyBufferedReader {
  5.         private Reader r;

  6.         public MyBufferedReader(Reader r) {
  7.                 this.r = r;
  8.         }

  9.         private String readLine(StringBuilder sb1) throws IOException {
  10.                 StringBuilder sb2 = new StringBuilder();
  11.                 int ch;

  12.                 while ((ch = r.read()) != -1) {
  13.                         if (ch == '\r') {
  14.                                 continue;
  15.                         }

  16.                         if (ch == '\n') {
  17.                                 return sb2.insert(0, sb1).toString();
  18.                         } else {
  19.                                 sb2.append((char) ch);
  20.                         }
  21.                 }

  22.                 if (sb2.length() != 0) {
  23.                         return sb2.insert(0, sb1).toString();
  24.                 }

  25.                 return null;
  26.         }

  27.         // 读取一行,带行号功能,起始行号有用户指定
  28.         @SuppressWarnings("resource")
  29.         public String readLine(int lineNum) throws IOException {
  30.                 StringBuilder sb = new StringBuilder();
  31.                 Formatter formatter = new Formatter(sb);

  32. //***********************************问题***************************************************
  33. //主要是这里,怎么能把行号的位数不写死,比如文件有20行,这里就是%2d,如果是380行,就是%3d,依次类推
  34.                 formatter.format("%3d:  ", lineNum);
  35.                 return readLine(sb);
  36.         }

  37.         // 读取一行
  38.         public String readLine() throws IOException {
  39.                 return readLine(new StringBuilder());
  40.         }

  41.         public void myClose() throws IOException {
  42.                 r.close();
  43.         }
  44. }
复制代码

作者: 李菁    时间: 2012-7-24 19:30
定义一个计数器,每读取一行计数器加1就行了
作者: 肖琦    时间: 2012-7-24 19:42
楼主可以在自己定义的类中定义一个全局变量count,用它专门来计数,循环执行一次就++,这样就可以给每行标号了。


作者: 王志明    时间: 2012-7-24 19:46
我的程序现在就可以表行号的,我想找到一个办法先把写文件前先把行数算出来。。




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