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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class MyReader {
  2.     public Reader reader;
  3.     public int index = 1; // 行号

  4.     public MyReader(Reader reader) {
  5.         this.reader = reader;
  6.     }

  7.     public String readLine() throws IOException { //将异常交给方法调用处处理
  8.         StringBuilder s = new StringBuilder(index + " : ");
  9.         int buf;
  10.         while ((buf = reader.read()) != 10 && buf != -1) { //当读到'\n'时停止读取
  11.             s.append((char) buf);
  12.         }
  13.         index++;
  14.         if (buf == -1)
  15.             return null;
  16.         else
  17.             return s.toString();
  18.     }

  19.     public void close() throws IOException {  //提供close方法,关闭资源;
  20.         if (reader != null) {
  21.             reader.close();
  22.         }
  23.     }
  24. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 本来想加分的~~结果点错踩了。。。杯具.

查看全部评分

3 个回复

正序浏览
叶桂宏 发表于 2013-1-4 10:17
把index定义为私有的,然后提供set方法,这样程序是不是更好些呢?

谢谢建议!!  是应该定义似有的!!

这set方法也秒!   可以初始化行号~   妙啊 !谢谢!!
回复 使用道具 举报
测试类:
  1.     public static void main(String[] args) {
  2.         Reader in = null;
  3.         MyReader myReader=null;
  4.         try {
  5.             in = new FileReader("/home/gaoyihang/Desktop/NormalWindow.java");
  6.             myReader = new MyReader(in);
  7.             String s = null; // 定义一个字符串 接收每一行数据
  8.             while ((s = myReader.readLine()) != null) {
  9.                 System.out.println(s);
  10.             }
  11.         } catch (IOException e) {
  12.             e.printStackTrace();
  13.         } finally {
  14.             if (myReader != null) {
  15.                 try {
  16.                     myReader.close();
  17.                 } catch (IOException e) {
  18.                     e.printStackTrace();
  19.                 }
  20.             }
  21.         }
  22.     }
复制代码
希望大家多提意见!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马