import java.io.FileReader; import java.io.IOException; /* 明白了BufferedReader类中特有方法readLine的原理后,可以自定义一个类中包含一个功能和readLine一致的方法,来模拟一下BufferedReader */ public class MyBufferedReader { private FileReader r; public MyBufferedReader(FileReader r) { this.r = r; } //可以一次读一行数据的方法 public String myReadLine() throws IOException { //定义一个临时容器。原BufferedReader封装的是字符数组。为了演示方便,定义StringBuilder容器,最终返回字符串。 StringBuilder sb = new StringBuilder(); int ch; while ((ch = r.read()) != -1) { 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(); } } class MyBufferedReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("buf.txt"); MyBufferedReader myBuf = new MyBufferedReader(fr); String line; while ((line = myBuf.myReadLine()) != null) { System.out.println(line); } myBuf.myClose(); } }
原文:http://www.cnblogs.com/echo1937/p/6262490.html