黑马程序员技术交流社区

标题: 可以打印行号的自定义BufferedReader [打印本页]

作者: 黑马连家华    时间: 2012-5-12 18:18
标题: 可以打印行号的自定义BufferedReader
本帖最后由 黑马连家华 于 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 : /*
不知道哪里出错了?
原来后面有答案呀...太性急了..
等我看完,还不会的话再来看看大家的答案
虽然上面的代码还不对,但我已经会了,谢谢楼下的兄弟哦
作者: 黑马连家华    时间: 2012-5-12 18:39
林康 发表于 2012-5-12 18:30
public void mySetLineNumber(int num)
{
        this.num = num+1;

不对哦!
而且这不是重点,重点是为什么只打印了文件的头一行,其它的行没有打印
作者: 黑马连家华    时间: 2012-5-12 19:17
/*
自定义一个缓冲区,可以输出行号
现在运行成功了,感觉确实是林同学说的情况,每次都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("无法关闭流资源");
                        }
                }
        }
}

作者: 黑马连家华    时间: 2012-5-13 15:53
啵一个~




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