自定义类模拟LineNumberReader的特有功能,获取每次读取数据的行号
LineNumberReader的特有功能有:
int getLineNumber():获得当前行号。
void setLineNumber(int lineNumber):设置当前行号。
代码如下:
public class MyLineNumberReader { private Reader r; private int lineNmber = 0; public MyLineNumberReader(Reader r) { this.r = r; } public int getLineNmber() { return lineNmber; } public void setLineNmber(int lineNmber) { this.lineNmber = lineNmber; } public String readLine() throws IOException { lineNmber++; //当读取每一行数据时,相应的行数加一 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) { // 为防止数据丢失,判断sb的长度是否大于0 return sb.toString(); } return null; } public void close() throws IOException { this.r.close(); } }