(84)BufferedReader子类:LineNumberReader
LineNumberReader:是BufferedReader的子类
更增强了缓冲区(BufferedReader)的功能,跟踪行号,此类的特有方法getLineNumber(int)[获取当前行号(从1开始)] setLineNumber(int) [设置当前行号]
package Demo;
import java.io.*;
public class LineNumberDemo {
public static void main(String[] args) {
FileReader fr=null;
LineNumberReader ln=null;
try {
fr=new FileReader("Demo.java");
ln=new LineNumberReader(fr);
String line=null;
ln.setLineNumber(15);//将从16行往后读
while((line=ln.readLine())!=null) {
System.out.println(ln.getLineNumber()+":"+line);
}
}catch(IOException e) {
throw new RuntimeException("读取失败");
}
finally {
try {
if(ln!=null)
ln.close();
}catch(IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
}
模拟LineNumberReader的功能:
(83)中有MyBufferedReader类的实现形式,因为在体系中line继承了buffer,所以自己模拟实现的类也应该这样继承着写
public class MyNumberReader extends MyBufferedReader {
private int lineNumber;
MyNumberReader(Reader r){
super(r);//父类已经实现,调用即可
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
public String myReadLine()throws IOException {
lineNumber++;//每次调用这个函数,都加1
return myReaderLine();
}
}