gpt4 book ai didi

自定义BufferedReader的实例

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章自定义BufferedReader的实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

缓冲区的建立目的就是增加传输性能,使我们传输数据更加快速 。

缓冲区的内部其实很简单 就是在内部封装了一个数组 用数组来存储数据 对外提供一些方法对数组进行访问 。

其中这些方法的操作就是对数组的指针(角标).

缓冲区的原理:从源中获取一批数据到缓冲区,再从缓冲区中一个一个取出 取完后用-1作为结束标记 。

在BufferedReader中我们读取数据方法有read() ,readLine() 。

read() 其参数为char[],cbuf,int off,int len。其返回值为-1 。

readLine()方法是一行一行的取 其内部就像是一个字符串容器StringBuffder 其返回值为null,

首先定义一个类 在类中定义两个读取数据的方法 MyReader(),MyReadLine(),

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class MyBufferedReader {
  private FileReader fr;
 
  private char[] buff = new char[1024];
 
  private int zz = 0;
 
  private int count = 0;
 
  MyBufferedReader(FileReader fr){
   this.fr = fr;
  }
 
  public int MyRead() throws IOException{
  if(count==0){
   count = fr.read(buff);
    zz =0;
  }
  if(count<0)
   return -1;
 
  char ch = buff[zz++];
 
  count--;
  return ch;
 
}
  public String MyReadLine() throws IOException{
   StringBuilder stb = new StringBuilder();
   
   int ch = 0;
   while((ch=MyRead())!=-1){
   
    if(ch=='\r')
     continue;
    if(ch=='\n')
     return stb.toString();
   
    stb.append((char)ch);
   
   }
   if(stb.length()!=0)
    return stb.toString();
   return null;
  }
  public void MyClose() throws IOException{
   fr.close();
  }
}

里面我定义了指针zz 和一个缓冲区计数器count来记录缓冲区内读取数据的变化 。

当count==0时 就往缓冲区内读入数据 zz为0 从第一个数开始读 。

小于0时数据读取完毕 返回-1 。

在MyReadLine()中 创建一个字符串容器StringBuilder 来存储数据党stb==\n时 一行读取完毕其返回值为null,

以上这篇自定义BufferedReader的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:http://www.cnblogs.com/alex96/archive/2017/12/15/8041720.html 。

最后此篇关于自定义BufferedReader的实例的文章就讲到这里了,如果你想了解更多关于自定义BufferedReader的实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com