模拟一个带行号的缓冲区对象
import java.io.IOException;
import java.io.Reader;
public class MyBufferedReader extends Reader {
private Reader reader;
public MyBufferedReader(Reader reader) {
this.reader = reader;
}
public String myReadLine() throws IOException {
StringBuilder builder = new StringBuilder();
int ch;
while ((ch = reader.read()) != -1) {
if (ch == '\r') {
continue;
}
if (ch == '\n') {
return builder.toString();
} else {
builder.append((char) ch);
}
}
if (builder.length() != 0) {
return builder.toString();
}
return null;
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
return reader.read(cbuf, off, len);
}
@Override
public void close() throws IOException {
reader.close();
}
}
import java.io.IOException;
import java.io.Reader;
public class MyLineNumberReader extends MyBufferedReader {
private int lineNumber;
public MyLineNumberReader(Reader reader) {
super(reader);
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
@Override
public String myReadLine() throws IOException {
lineNumber++;
return super.myReadLine();
}
}
网友评论