public class MyByteBuffer {
public void test(){
byte[] buffers = new byte[11];
for(int i=0;i<buffers.length;i++){
buffers[i] = (byte) i;
}
ByteBuffer byteBuffer = ByteBuffer.wrap(buffers);
// byteBuffer.flip();
byteBuffer.get();
byteBuffer.get();
byteBuffer.get();
ByteBuffer payload = byteBuffer.duplicate();
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
System.out.println(payload.get()+"");
System.out.println(payload.get()+"");
System.out.println(payload.get()+"");
byteBuffer.flip();
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");//到这里报错
System.out.println(byteBuffer.get()+"");
System.out.println(byteBuffer.get()+"");
// System.out.println(byteBuffer.get()+"");
// System.out.println(byteBuffer.get()+"");
// System.out.println(byteBuffer.get()+"");
// System.out.println(byteBuffer.get()+"");
System.out.println("");
// byteBuffer.duplicate();//把原byteBuffer复制过来,同时把position也复制过来了
// byteBuffer.flip();//是读了几个数据,flip(),之后,只能读取原来读过的数据长度,再长就不行,例如,
// //capacity=10,读了6,flip()之后,只能读6个,读第7个就报错,所有flip()是,都写完,转换为读模式,然后可以读取所有
//而不能是,读了一段,在重新读
//ByteBuffer.wrap(buffers); postion=0;
//byteBuffer.put(b)// 会postion+1
}
public static void main(String[] args) {
MyByteBuffer myByteBuffer = new MyByteBuffer();
myByteBuffer.test();
}
}