2021-09-01 IO流(MyLineNumberReade

2021-09-21  本文已影响0人  Denholm

模拟一个带行号的缓冲区对象

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();
    }

}
上一篇 下一篇

猜你喜欢

热点阅读