自定义模拟LineNumberReader
//BufferedReader
// | - - LineNumberReader
//public int getLineNumber ()获得当前行号。
//public void setLineNumber (int lineNumber )
代码如下:
package cn.zsp.io_study13;
import java.io.IOException;
import java.io.Reader;
public class MyLineNumberReader {
private Reader r;
private int n=0;
public MyLineNumberReader(Reader r) {
this.r = r;
}
public String readLine() throws IOException {
n++;
StringBuilder sb =new StringBuilder();
int ch =0;
while((ch=r.read())!=-1) {
if(ch =='\r')
{
continue;
}
else if(ch =='\n')
{
return sb.toString();
}
else
{
sb.append((char)ch);
}
}
if(sb.length()>0)
{
return sb.toString();
}
return null;
}
public int getLineNumber() throws IOException {
return n;
}
public void setLineNumber(int n)
{
this.n=n;
}
public void close() throws IOException {
this.r.close();
}
}
主函数如下:
package cn.zsp.io_study13;
import java.io.FileReader;
import java.io.IOException;
//BufferedReader
// | - - LineNumberReader
//public int getLineNumber ()获得当前行号。
//public void setLineNumber (int lineNumber )
public class LineNumberReaderTest {
public static void main(String[] args) throws IOException {
MyLineNumberReader lnr=new MyLineNumberReader(new FileReader("a" +
".txt"));
String line;
lnr.setLineNumber(10);
while ((line=lnr.readLine())!=null)
{
System.out.println(lnr.getLineNumber()+":"+line);
}
lnr.close();
}
}