本帖最后由 奔跑的二叉树 于 2013-9-15 15:01 编辑
- package cn.baidu.com;
- /*
- * 在明白了BufferedReader类中特有方法readLine类中特有方法readLinde的原理后
- * 可以自定义一个类中包含一个功能和readLine一致的方法,来模拟一下bufferedReader
- */
- import java.io.*;
- class MyBufferedReader
- {
- private FileReader r;
- MyBufferedReader(FileReader r)
- {
- this.r=r;
- }
- //可以一次读一行数据的方法
- public String myReadLine() throws IOException
- {
- //定义一个临时容器,原BufferedReader封装的是字符数组
- //为了演示方便,定义一个StringBuilder容器,因为最终还是要将数据变成字符串
- StringBuilder sb=new StringBuilder();
- int ch=0;
- 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();
- }
- }
- public class MyBufferedReaderDemo {
- public static void main(String[] args) throws IOException {
- FileReader fr=new FileReader("F:\\Demo.txt");
- MyBufferedReader mybuf=new MyBufferedReader(fr);
- String line=null;
- while((line=mybuf.myReadLine())!=null)
- {
- System.out.println(line);
- }
- mybuf.myClose();
- }
- }
复制代码 纳了闷了,为什么不是一行一行的呢,哪里写错了呢 |