ByteBuffer是怎么構成的,如何使用?

ByteBuffer通常用于Java原生NIO操作中,對Channel進行讀取或者寫入,其中封裝了一些操作byte數組的方法,還是很實用的。

ByteBuffer的幾個基本屬性:

  • position:表示進行下一個讀寫操作的下標位置

  • limit:表示進行讀寫操作時的結束位置;

  • capacity:表示存儲的容量

  • mark: 對數據進行標記

初始化:對ByteBuffer進行初始化,可以使用靜態方法wrap(byte[] data)封裝數組,也可以通過另一個靜態方法allocate(int size)初始化指定長度的ByteBuffer。

初始狀態position:0,limit:值為最大長度,capacity:值為最大長度

bytebuffer-init.png

數據寫入(或讀取):每寫入(或讀取)一個值,position加一(圖中是寫入兩個數據之后的位置)。

bytebuffer-write.png

準備讀取(或寫入):使用flip()方法翻轉準備數據讀取(或寫入),進行讀取(或寫入)時,不能超過limit限制,讀超出限制報錯BufferUnderflowException(寫超出限制報錯BufferOverflowException

bytebuffer-flip.png

清除數據:回到初始狀態可以調用clear()方法,但是數據并不會刪除,當寫入時會直接覆蓋對應位置的值。

bytebuffer-clear.png

標記位置:當需要進行標記時,可以使用mark()方法,即mark=position;進行讀取后,可調用reset()方法直接回到mark標記的位置,即position=mark

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容