Buffer

Buffer是java.nio包下的一个抽象方法。提供了对I/O的高速操作。
Buffer主要有两种操作模式,读模式和写模式。
内部通过几个变量,对buffer进行操作。

//变量所表示的意义在不同操作中也不同
// Invariants: mark <= position <= limit <= capacity
private int mark = -1;
private int position = 0;
private int limit;
private int capacity;

mark
标记位

position
在写模式下,表示可以写入的当前位置,最大值可以为capacity-1,初始值为0
在读模式下,标记当前可读的位置

limit
在写模式下,表示当前写入的位置,capacity-limit即为还可写入的数据量,即写模式下position-1
在读模式下,表示当前可读内容,limit-position即为可读的数据量,即写模式下position

capacity
表示当前Buffer容量

对Buffer的操作一般是以下操作

  1. buffer.read() 读入数据
  2. buffer.flip() 写模式变为读模式
  3. buffer.get() 取数据
  4. buffer.clear()或者buffer.rewind() 准备再次读入数据

buffer.read可以从输入流或者channel中读入

flip()

//写模式变为读模式
 public final Buffer flip() {
        limit = position;   //可读的最大限制
        position = 0;       //position置为0,从头开始读
        mark = -1;          //重置标记位
        return this;
    }

clear()

    public final Buffer clear() {   //重置所有标记,为读入数据做好准备
        position = 0;         
        limit = capacity;
        mark = -1;
        return this;
    }

rewind()

    public final Buffer rewind() {    //和clear()类似,但是并没有重置limit 数据还在,可重复读
        position = 0;
        mark = -1;
        return this;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值