【需求】:模拟一个带行号的缓冲区对象
读取的内容Demo.java:
class Demo
{
public static void main(String[] args)
{
System.out.println('h');
System.out.println("=================");
System.out.println("goodgoodstudy");
System.out.println("Hello World!");
}
}
【代码】:
import java.io.*;
class MyLineNumberReader
{
private int lineNumber=0;
private Reader r;
MyLineNumberReader(Reader r){
this.r=r;
}
public void setLineNumber(int lineNumber){
this.lineNumber=lineNumber;
}
public int getLineNumber(){
return lineNumber;
}
public String myReadLine() throws IOException{
lineNumber++;
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=r.read())!=-1){
if (ch=='\r') continue;
else if(ch=='\n') return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose() throws IOException{
r.close();
}
}
class MyLineNumberReaderDemo{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("Demo.java");
MyLineNumberReader mlnr=new MyLineNumberReader(fr);
String line=null;
mlnr.setLineNumber(0);
while((line=mlnr.myReadLine())!=null){
System.out.println(mlnr.getLineNumber()+":"+line);
}
fr.close();
}
}