本帖最后由 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
}
}
|
|