4.8 NIO Buffer详解

4.8 Buffer

       Java中的Buffer就是一块内存区,用于存放特定的数据,Buffer常用于和Channel一起工作,也能做缓存。将数据从其他地方读到Buffer,也可以将Buffer中的数据写入其他地方。


4.8.1 Buffer分类

       Java中有以下不同类型的buffer:ByteBuffer,MappedByteBuffer,CharBuffer,DoubleBuffer,FloatBuffer
,IntBuffer,LongBuffer,ShortBuffer

Buffer作用
ByteBuffer存byte型
MappedByteBuffer
CharBuffer存字符型
DoubleBufferDouble型
FloatBufferFloat型
IntBufferInt型
LongBufferLong型
ShortBufferShort型

4.8.2 Buffer属性

       Java中Buffer有三个重要属性,分别是Capacity, Position and Limit。

  1. Capacity表示容量,即创建的Buffer的大小,一旦创建就永远不会改变。
  2. Position表示当前读或写的位置。
  3. Limit表示进行操作的上限。在写模式下,Limit和Capacity永远相同,只要Buffer还没有满,就可以往Buffer中写入。在读模式下,Limit<=Capacity,该限制表示Buffer中有多少数据就只能读多少数据。

在这里插入图片描述

4.8.3 Buffer使用

  1. 创建Buffer,使用allocate方法
ByteBuffer buffer = ByteBuffer.allocate(48);
  1. 写数据进Buffer(从channel或者使用put方法)
int read = channel.read(buffer);
ByteBuffer buffer = ByteBuffer.allocate(48);
buffer.put((byte)2);
  1. flip()方法,在读buffer之前使用,可以将Buffer的position重置为0.

4.8.4 rewind() clear() 和compact()的区别

方法作用
rewind重置position为0,不修改Buffer中的数据
clear重置position为0并且清空Buffer中的数据
compact重置position为0且只清空已读数据

在这里插入图片描述

4.8.5 mark() and reset()

方法作用
mark标记当前位置
reset回到标记的位置
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值