用代码来自己实现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()); } } } }