MyBufferedReader

 1 /**
 2 需求:自定义一个包含 readLine 方法的 BufferedReader 来模拟一下 BufferedReader
 3  */
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 import java.io.Reader;
 7 
 8 class MyBufferedReader extends Reader {
 9     private Reader r;
10 
11     MyBufferedReader(Reader r)// 建立构造函数.一开始就要有流
12     {
13         this.r = r;
14     }
15 
16     // 可以一次读一行数据的方法。
17     public String myReadLine() throws IOException {
18         // 定义一个临时容器。原BufferReader封装的是字符数组。
19         // 为了演示方便。定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
20         StringBuilder sb = new StringBuilder();
21         int ch = 0;
22         while ((ch = r.read()) != -1) {
23             if (ch == '\r')
24                 continue;// 判断如果是\r的话在运行.判刑下个\n,如果是最后一行了.返回字符串
25             if (ch == '\n')
26                 return sb.toString();
27             else
28                 sb.append((char) ch);
29         }
30 
31         if (sb.length() != 0)
32             return sb.toString();
33         return null;
34     }
35 
36     /*
37      * 覆盖Reader类中的抽象方法。
38      */
39     public int read(char[] cbuf, int off, int len) throws IOException {
40         return r.read(cbuf, off, len);
41     }
42 
43     public void close() throws IOException {
44         r.close();
45     }
46 
47     public void myClose() throws IOException {
48         r.close();
49     }
50 }
51 
52 class MyBufferedReaderDemo {
53     public static void main(String[] args) throws IOException {
54         FileReader fr = new FileReader("buf.txt");
55 
56         MyBufferedReader myBuf = new MyBufferedReader(fr);// 自定义的装饰类
57 
58         String line = null;
59 
60         while ((line = myBuf.myReadLine()) != null) {
61             System.out.println(line);
62         }
63         myBuf.myClose();// 关闭资源
64     }
65 }

 

转载于:https://www.cnblogs.com/wtyqer/p/3527716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值