import java.io.*;
public class MyBufferedReader {
//定义Reader类对象,由调用者传递
private Reader r;
//定义int变量,保存行号
private int lineNumber = 0;
public MyBufferedReader(Reader r){this.r=r;}
/*
* 读取文本一行,返回字符串
* 读取到文件末尾返回null
* 使用字符串缓冲区对象
* read方法读取一个字符,判断是不是\r \n
* 如果都不是append到缓冲区
* \n 一行结束了,将缓冲区变成字符串返回
* read() -1 文件结束了,返回null
*/
public String readLine()throws IOException{
//创建字符串缓冲区
StringBuilder builder = new StringBuilder();
//使用read方法循环读取文件
int len = 0 ;
while((len = r.read())!=-1){
//len读取到的字符进行判断
if( len == '\r')
//无效字符,继续读取下一个
continue;
if( len == '\n'){
lineNumber++;
//这行结束了,将缓冲区变成字符串返回
return builder.toString();
}
//如果两个if都不成立,有效字符,追加缓冲区
builder.append((char)len);
}
//判断缓冲区中有没有字符串,如果有就返回,没有就反null
if(builder.length()!=0){
lineNumber++;
return builder.toString();
}
return null;
}
public void close()throws IOException{
r.close();
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
}
|
|