| 
 
| import java.io.FileNotFoundException; import java.io.FileReader;
 import java.io.IOException;
 public class MyReadLine {
 /**
 * 明白了BufferedReader类中特有的readLine方法的原理后,
 * 可以自定义一个类中包含一个功能和readLine一致的方法。来模拟一下Bufferedread
 * @param args
 * @throws IOException
 */
 public static void main(String[] args) throws IOException {
 // TODO 自动生成的方法存根
 //定义要读取的文件
 FileReader fr = new FileReader("D:/CopyBuf.txt");
 //关联要读取的文件
 MyBufferedRead myb = new MyBufferedRead(fr);
 //初始化用于存储字符的String变量
 String line = null;
 //循环读取数据
 while((line = myb.myRead())!=null){
 System.out.println(line);
 }
 myb.myClose();
 }
 }
 class MyBufferedRead{
 //可以一次读一行的方法
 private FileReader fr;
 MyBufferedRead(FileReader fr){
 this.fr = fr;
 }
 public String myRead() throws IOException{
 //定义一个容器,原BufferedReader封装的是字符数组。
 //为了演示方便,在这里就定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
 StringBuilder sb = new StringBuilder();
 int ch = 0;
 while((ch = fr.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{
 fr.close();
 }
 }
 | 
 |