自定义类模拟LineNumberReader的特有功能,获取每次读取数据的行号

自定义类模拟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();
    }
}

猜你喜欢

转载自www.cnblogs.com/LiuNianJinShi/p/11436854.html