java nio buffer

buffer是固定数量的数据的容器,可以被填充和读取。
一个 buffer 主要由 position,limit,capacity 3个属性

capacity : buffer最大容量,创建时设定,不可修改

position:当前操作(读写)位置

limit: 第一个不能被读写的元素的位置,即最大可用空间.如果position=limit,继续往buffer
中存放数据,会抛越界异常

mark:标记当前位置,可以后续reset返回到当前position
几个属性关系:
0<=mark<=position<=limit<=capacity

clear方法:为写入数据做准备
	   public final Buffer clear() {
position = 0;
limit = capacity;
mark = -1;
return this;
}


flip方法,为读取该buffer做准备
		public final Buffer flip() {
limit = position;//position是前面已填充数据的位置
position = 0;
mark = -1;
return this;
}


rewind方法,从新设置position为0,后续可进行重复操作
	    public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}


compact(): 将未读取的数据拷贝到 buffer 的头部位。即将当前position数据复制到0出,position+n
出复制到n处



//allocate创建一个buffer,指定capacity,默认limit=capacity,position=0
CharBuffer buffer = CharBuffer.allocate(10);
//存入元素
buffer.put('A').put('B');
//从新设定buffer的limit为6,则该buffer最多能存储6个元素
buffer.limit(6);
buffer.put('C').put('D').put('E');
//准备读取该buffer中元素
buffer.flip();
int count = buffer.limit();//5
for(int i=0;i<count;i++){
System.out.println(buffer.get());
}
//rewind该buffer,进行第二次读取操作
buffer.rewind();
for(int i=0;i<count;i++){
System.out.println(buffer.get());
}
buffer.rewind();
while(buffer.hasRemaining()/*return position<limit*/){
System.out.println(buffer.get());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值