| 
 
| 本帖最后由 zhangchao 于 2012-11-12 08:33 编辑 
 /*具体情况是这样的,两个类都能够独立的正常运行,其中Demo类是一个模拟BufferedReader的,LineNumber是模拟LineNumberReader的,我想把在LineNumber中创建一个Demo的实例,但是定义以后报找不到类。
 他们是属于同一个包,不说了 我上代码*/
 package SystemIO;
 import java.io.*;
 import SystemIO.*;//他们都位于此包。
 public  class LineNumber {
 public static void main(String[] args)throws IOException {
 
 Reader fr=new FileReader("SystemIO\\SystemDemo.java");
 LineNumberReader lnr=new LineNumberReader(fr);
 // SystemIO.Demo bur=new SystemIO.Demo(fr);//创建自己BufferedReader的对象。
 Demo bur=new Demo(fr);//用Demo或者SystemIO.Demo创建的在编译的时候都会报找不到符号,
 
 
 String len=null;
 lnr.setLineNumber(200);
 int count=lnr.getLineNumber();
 while((len=bur.myReadLine())!=null){//一次读一行
 System.out.println(count+len);
 count++;
 }
 fr.close();
 }
 }
 
 
 package SystemIO;
 import java.io.*;
 public class Demo extends Reader  {//模拟一个与BurreredReader一样的类,能够提供他的readLine();原理是先写到一个缓冲区里面。
 private Reader r;
 public Demo(Reader r){
 this.r=r;
 }
 public String myReadLine()throws IOException{//模拟BufferedReader的readLine()方法。
 StringBuilder sb=new StringBuilder();
 int len=0;
 while((len=r.read())!=-1){
 if(len=='\r')
 continue;
 if(len=='\n')
 break;
 else
 sb.append((char)len);//转成字符。
 }
 if(sb.length()!=0)
 return sb.toString();
 return null;//为什么要返回空,如果不返回就会造成调用这个方法时会无限循环。
 }
 public void myClose() throws IOException{
 r.close();
 }
 //覆盖掉抽象方法。
 public int read(char[] cbuf, int off, int len) throws IOException {
 // TODO Auto-generated method stub
 return r.read(cbuf,off,len);
 }
 @Override
 public void close() throws IOException {
 // TODO Auto-generated method stub
 
 }
 }
 
 
 | 
 |