用代码来自己实现BufferedReader中的readline方法:
package ioDemo;
import java.io.FileReader;
import java.io.IOException;
class MyBufferedReader{
private FileReader r;
//在对象建立的时候就应该有一个FileReader对象传进来
MyBufferedReader(FileReader r){
this.r = r;
}
//定义自己的readline方法
public String myReadline() throws IOException{
//定义一个临时容器,原BufferReader封装的是字符数组
//为了方便,我们定义一个StringBuilder容器,因为还是最终还是要将数据变成字符串。
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch=r.read())!=-1) {
//Windows的换行符是\r\n,如果读到\r就不往容器里面添加,如果读到\n就说明这一行结束了,就把容器中的数据变成字符串返回。
if(ch=='\r') {
continue;
}
if(ch=='\n') {
return sb.toString();
}else {
sb.append((char)ch);
}
}
//如果最后一行没有换行符,就不会把这一行返回。所以在这里再加一个判断;
if(sb.length()!=0) {
return sb.toString();
}
return null;
}
//关闭流方法
public void myClose() throws IOException{
r.close();
}
}
public class ReadlineTest {
public static void main(String[] args) {
MyBufferedReader mbr = null;
try {
mbr = new MyBufferedReader(new FileReader("abc.txt"));
String line = null;
while((line=mbr.myReadline())!=null) {
System.out.println(line);
}
} catch (IOException e) {
// TODO: handle exception
System.out.println(e.toString());
} finally {
try {
if(mbr!=null) {
mbr.myClose();
}
} catch (IOException e2) {
// TODO: handle exception
System.out.println(e2.toString());
}
}
}
}