您的位置:首页 > Web前端

NIO——buffer

2015-09-19 22:11 211 查看
(1)作用

NIO中的Buffer用于和NIO通道进行交互:数据从通道读入缓冲区,从缓冲区写入到通道中的。

Buffer的本质是一块可读可写的内存,NIO将这块内存包装成Buffer对象,并提供了一组方法,用来方便的访问该内存

(2)position、limit

1)写模式

可以理解为栈,position为栈顶指针,limit为指针的最大位置

2)读模式

可以理解为队列,position为队首指针,limit为队尾指针

capacity是整个内存的大小,不用和前两个一起比较



3)测试

@Test
public void test() {
System.out.println("初始写状态");
ByteBuffer buffer = ByteBuffer.allocate(8);
System.out.println("position: "+buffer.position());
System.out.println("limit: "+buffer.limit());

System.out.println("-----------------");
buffer.put((byte) 5);
byte[] bytes = {6,7,8};
buffer.put(bytes);
System.out.println("放入4个数据后状态");
System.out.println("position: "+buffer.position());
System.out.println("limit: "+buffer.limit());

System.out.println("-----------------");
buffer.flip();
System.out.println("切换为读状态");
System.out.println("position: "+buffer.position());
System.out.println("limit: "+buffer.limit());

System.out.println("-----------------");
byte res = buffer.get();
System.out.println(res);
System.out.println("读取一个数据后状态");
System.out.println("position: "+buffer.position());
System.out.println("limit: "+buffer.limit());
}
结果为:

初始写状态
position: 0
limit: 8
-----------------
放入4个数据后状态
position: 4
limit: 8
-----------------
切换为读状态
position: 0
limit: 4
-----------------
5
读取一个数据后状态
position: 1
limit: 4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: