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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王志明 中级黑马   /  2012-7-24 18:31  /  1327 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码

3 个回复

倒序浏览
定义一个计数器,每读取一行计数器加1就行了
回复 使用道具 举报
楼主可以在自己定义的类中定义一个全局变量count,用它专门来计数,循环执行一次就++,这样就可以给每行标号了。

回复 使用道具 举报
我的程序现在就可以表行号的,我想找到一个办法先把写文件前先把行数算出来。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马