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,根据个数来取数据

猜你喜欢

转载自blog.csdn.net/u012391876/article/details/74079427