Java新NIO中的ByteBuffer

一世执手 提交于 2020-01-25 07:32:53

1. ByteBuffer中的参数position、limit、capacity、mark含义:

  • position:表示当前指针的位置(下一个要操作的数据元素的位置)
  • limit:表示当前数组最大的使用量,即有效位置的EOF位置(缓冲区数组中不可操作的下一个元素的位置,limit<=capacity)
  • capacity:表示缓冲区最大容量(缓冲区数据的总长度)
  • mark:用于记录当前position的前一个位置或者默认是-1

2. ByteBuffer中常用方法含义:

  • reset():把position设置为mark的值,相当于之前做过一个标记,现在回退到之前标记的地方。
  • clear():将参数设置为position=0,limit=capacity,mark=-1,类似于初始化,但并不影响底层byte数组的内容(注意:clear只是把指针移到位置0,并没有真正清空数据)。
  • flip():将参数设置为limit=position,position=0,mark=-1,翻转,即将未翻转之前0到position之间的数据放置到翻转之后的position(即0)到limit之间的这块区域,翻转将缓冲区的状态由存数据变为准备取数据(注意:将当前位置设置为EOF,指针位置指向0)。
  • rewind():将参数设置为position=0,mark=-1,limit的值不变(注意:指针指向0)。
  • remaining():return limit - position,即返回limit和position之间的相对位置差。
  • hasRemaining():return position < limit,即返回是否还有未读内容。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!