缓冲区

Java NIO中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据
根据数据类型不同(Boolean)除外,提供了相应类型的缓冲区;
ByteBufer
CharBuffer
ShortBuffer1
IntBuffer
LongBuffer
FloatBuffer
DoubleBuffer
上面的缓冲区管理方式几乎一致,通过allocate方法获取缓冲区

缓冲区的核心方法

put();存入数据到缓冲区
get();获取缓冲区中的数据
flip();切换到读取数据模式
rewind();
clear();恢复成最初状态,但里面的数据依然存在
mark();在当前position进行标记
reset();恢复到mark的位置
hasRemaining();查看缓冲区是否还有数据
remaining();缓冲区还剩几个字节没有读取

缓冲区的属性

capacity : 容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。
limit : 界限,表示缓冲区中可以操作数据的大小。(limit后的数据不能进行读写)
position : 位置,表示缓冲区正在操作数据的位置。
position <= litit <= capacity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//分配1024*8个字节给缓冲区
ByteBuffer byteBuffer = ByteBuffer.allocate(1024 * 8);
//写入数据到缓冲区
byteBuffer.put("123".getBytes());
//打印缓冲区的属性
System.out.println("mark:" + byteBuffer.mark());
System.out.println("position:" + byteBuffer.position());
System.out.println("limit:" + byteBuffer.limit());
System.out.println("capacity:" + byteBuffer.capacity());

//切换到读模式
byteBuffer.flip();
byte[] bytes = new byte[byteBuffer.limit()];
byteBuffer.get(bytes);
System.out.println(new String(bytes,0,bytes.length));