package MyLineNumberReader;
import java.io.IOException;
import java.io.Reader;
/*
* 自定义类模拟LineNumberReader的获取行号功能案例
*
* BufferedReader
* |--LineNumberReader
* public int getLineNumber():获取当前行号
* public void setLineNumber(int lineNumber):设置当前行号
*/
public class MyLineNumberReader {
private Reader r;
private int lineNumber = 0;
public MyLineNumberReader(Reader r) {
this.r = r;
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
public String readLine() throws IOException {
lineNumber++;
StringBuilder sb = new StringBuilder();
int ch = 0;
while ((ch = r.read()) != -1) {
if (ch == '\r') {
continue;
}
if (ch == '\n') {
return sb.toString();
} else {
sb.append((char) ch);
}
}
if (sb.length() > 0) {
return sb.toString();
}
return null;
}
public void close() throws IOException {
this.r.close();
}
}