A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

~~~~~~~~~~~~
  1. package mybufferedreader;

  2. import java.io.FileReader;
  3. import java.io.IOException;

  4. /**
  5. * @author 面具
  6. *
  7. */
  8. public class MyBufferedReader {
  9. //        创建常量 ,定义数组长度

  10.         private static final int BUF_SIZE = 1024;

  11.         /**
  12.          * @param args
  13.          */
  14.         private FileReader fr;
  15. //        定义数组作为缓冲区
  16.         private char[] buf = new char[BUF_SIZE];
  17. //        定义变量记录角标值,用于操作数组,当操作到最后一个元素是,角标归零
  18.         private int pos = 0;
  19. //        定义计数器,记录数组存储的数据的个数,当该数据自减到0时,读取数据存入数组
  20.         private int count = 0;
  21.         public MyBufferedReader(FileReader fr) {
  22.                 super();
  23.                 this.fr = fr;
  24.         }
  25.         /**
  26.          * 该方法一次读取一个字符
  27.          * @return
  28.          * @throws IOException
  29.          * @see java.io.InputStreamReader#read()
  30.          */
  31.         public int myread() throws IOException {
  32.                 if(count == 0 ){
  33.                         count = fr.read(buf);
  34.                         pos = 0 ;
  35.                 }
  36.                 if(count<0)
  37.                         return -1;
  38.                 char ch = buf[pos];
  39.                 pos++;
  40.                 count--;
  41.                 return ch;
  42.                
  43. /*//                1.从源文件中获取一批数据,并进行判断,只有在计数器为0时,才可以获取数据
  44.                 if(count==0){
  45.                         count = fr.read(buf);
  46.                         if(count<0)
  47.                                 return -1;
  48. //                        每次获取数据后角标归零
  49.                         pos = 0;
  50.                         char ch = buf[pos];
  51.                         pos++;
  52.                         count--;
  53.                         return ch;
  54.                 }else if(count >0 ){
  55.                         char ch = buf[pos];
  56.                         pos++;
  57.                         count--;
  58.                         return ch;
  59.                 }*/
  60.                         
  61.         }

  62.         public String myReadLine() throws IOException{
  63.                 StringBuilder sb = new StringBuilder();
  64.                 int ch;
  65.                 while((ch = myread())!=-1){
  66. //                        判断字符是否为回车字符
  67.                         if(ch == '\r')
  68.                                 continue;
  69.                         if(ch == '\n')
  70.                                 return sb.toString();
  71. //                        将读取到的数据添加到字符串缓冲区
  72.                         sb.append(ch);
  73.                 }
  74. //         最后一次读取后,判断字符串缓冲区的长度是否为0,如不为0 则将字符串缓冲区中的元素转换为字符串返回。
  75.                 if(sb.length()!=0){
  76.                         sb.toString();
  77.                 }
  78.                 return null;
  79.         }
  80. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马