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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马连家华 中级黑马   /  2012-5-12 18:18  /  2622 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马连家华 于 2012-8-13 17:27 编辑

/*
自定义一个缓冲区,可以输出行号
*/
import java.io.*;
class MyBufferedReader
{
private FileReader fr;
private int num;
MyBufferedReader(FileReader fr)
{
  this.fr = fr;
}
public void mySetLineNumber(int num)
{
  //this.num = num+1;改成
this.num=num;
}
public int myGetLineNumber()
{
  //return num++;改成
return num;
}
public String myReadLine() throws IOException
{
num++;
  BufferedReader br = new BufferedReader(fr);
  return br.readLine();
}
public void myClose() throws IOException
{
  fr.close();
}
}
class ReadBufferDemoWithLineNumber
{
public static void main(String[] args)
{
  MyBufferedReader mbr = null;
  try
  {
   mbr = new MyBufferedReader(new FileReader("BufferedWriterDemo.java"));
   mbr.mySetLineNumber(100);
   String buffer = null;
   while ((buffer = mbr.myReadLine()) != null)
   {
    System.out.println(mbr.myGetLineNumber()+" : "+buffer);
   }
  }
  catch (IOException e)
  {
   throw new RuntimeException("读取错误");
  }
  finally
  {
   try
   {
    if (mbr != null)
    {
     mbr.myClose();
    }
   }
   catch (IOException e)
   {
    throw new RuntimeException("无法关闭流资源");
   }
  }
}
}


打印结果是
101 : /*
不知道哪里出错了?
原来后面有答案呀...太性急了..
等我看完,还不会的话再来看看大家的答案
虽然上面的代码还不对,但我已经会了,谢谢楼下的兄弟哦

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
林康 发表于 2012-5-12 18:30
public void mySetLineNumber(int num)
{
        this.num = num+1;

不对哦!
而且这不是重点,重点是为什么只打印了文件的头一行,其它的行没有打印
回复 使用道具 举报
/*
自定义一个缓冲区,可以输出行号
现在运行成功了,感觉确实是林同学说的情况,每次都new一个新的,这是不可取的呵呵
*/
import java.io.*;
class MyBufferedReader
{
        private FileReader fr;
        private int num =0;
        private BufferedReader br = null;
        MyBufferedReader(FileReader fr)
        {
                this.fr = fr;
                br = new BufferedReader(fr);
        }
        public void mySetLineNumber(int num)
        {
                this.num = num;
        }
        public int myGetLineNumber()
        {
                return num;
        }
        public String myReadLine() throws IOException
        {       
                num++;
                return br.readLine();
        }
        public void myClose() throws IOException
        {
                fr.close();
        }
}
class ReadBufferDemoWithLineNumber
{
        public static void main(String[] args)
        {
                MyBufferedReader mbr = null;       
                try
                {
                        mbr = new MyBufferedReader(new FileReader("BufferedWriterDemo.java"));
                        mbr.mySetLineNumber(100);
                        String buffer = null;
                        while ((buffer = mbr.myReadLine()) != null)
                        {
                                System.out.println(mbr.myGetLineNumber()+" : "+buffer);
                        }
                }
                catch (IOException e)
                {
                        throw new RuntimeException("读取错误");
                }
                finally
                {
                        try
                        {
                                if (mbr != null)
                                {
                                        mbr.myClose();
                                }
                        }
                        catch (IOException e)
                        {
                                throw new RuntimeException("无法关闭流资源");
                        }
                }
        }
}
回复 使用道具 举报
啵一个~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马