java byte position_JAVA NIO 之ByteBuffer的mark、position、limit、flip、reset,get方法介绍

importjava.nio.ByteBuffer;public classByteBufferDemo {public static voidmain(String[] args){

String str= "helloWorld";

ByteBuffer buff=ByteBuffer.wrap(str.getBytes());

System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());//读取两个字节

byte[] abytes = new byte[1];

buff.get(abytes);

System.out.println("get one byte to string:" + newString(abytes));//Reads the byte at this buffer's current position, and then increments the position.

buff.get();

System.out.println("获取两个字节(两次get()方法调用)后");

System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());//Sets this buffer's mark at its position. like ByteBuffer.this.mark=position

buff.mark();

System.out.println("mark()...");

System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());//当读取到码流后,进行解码。首先对ByteBuffer进行flip操作,//它的作用是将缓冲区当前的limit设置为position,position设置为0

//flip方法将Buffer从写模式切换到读模式。调用flip()方法会将position设回0,并将limit设置成之前position的值。

// 这里的flip()方法,在详细的描述一下,其事这里是理解position和limit这两个属性的关键。

//用于后续对缓冲区的读取操作。然后根据缓冲区可读的字节个数创建字节数组,

//调用ByteBuffer的get操作将缓冲区可读的字节(获取position到limit的字节)

//数组复制到新创建的字节数组中,最后调用字符串的构造函数创建请求消息体并打印。

buff.flip();

System.out.println("flip()...");

System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());byte[] tbyte = new byte[1];

buff.get(tbyte);

System.out.println("get one byte to string:" + newString(tbyte));

System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());//BufferUnderflowException 测试//byte[] trbyte = new byte[2];//buff.get(trbyte);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值