NIO学习之ByteBuffer理解篇
Posted 彼岸花you
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NIO学习之ByteBuffer理解篇相关的知识,希望对你有一定的参考价值。
NIO系列教程网址:http://ifeve.com/overview/
NIO系列:http://blog.csdn.net/fan2012huan/article/details/51318006
1、 向ByteBuffer中写入数据
② 读取数据
可以根据pos 和limit来获取ByteBuffer里面的任意位置的数据。
buf.position 指定数据的开始位置
buf.limit 指定数据的结束位置
buf.array 整个ByteBuffer内的数据
2、ByteBuffer.flip()操作
flip其实就是对position和limit进行重新赋值,pos置0,limit的位置为原来pos。
3、ByteBuffer.compact()操作
buf.compact();根据pos,将buf pos后面的数据整体迁移pos个位置。最后的limit byteBuffer的大小就为oldSize-pos;pos=0;
4、byteBuffer.clear()操作
5、ByteBuffer的其他操作–略
6、ByteBuffer操作小结
对于ByteBuffer的操作,并不是真正的去操作里面的数据,更多的是根据pos和limit的操作去获取指定的数据以及进行数据的覆盖。
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
byteBuffer.put("1234".getBytes());
byteBuffer.clear();//
byteBuffer.put("666".getBytes());
byteBuffer.position(0);//使用flip时,limit=3 pos=0 就看不到第四个位置了 所以这里不能使用flip
byteBuffer.limit(4);
System.out.println(new String(byteBuffer.array()));
可以看到 后面输入的666是对前面的1234进行了覆盖。
常用操作:
–写数据时
put数据之后,进行flip –flip之后pos=0 limit就是数据的个数
–读取数据时:
new String(buf.array(),0,limit);–上面使用了flip,根据个数来取数据
以上是关于NIO学习之ByteBuffer理解篇的主要内容,如果未能解决你的问题,请参考以下文章