1. 程式人生 > >java.nio.Buffer flip()方法

java.nio.Buffer flip()方法

碰到java.nio.Buffer flip()方法,不明白是幹什麼用的,於是就趕快檢視中文API,API上面翻譯的是:"反轉此緩衝區。首先對當前位置設定限制,然後將該位置設定為零。如果已定義了標記,則丟棄該標記。"; 

  是這樣說的:Flips this buffer. The limit is set to the current position and then the position is set to zero. If the mark is defined then it is discarded.,意思大概是這樣的:調換這個buffer的當前位置,並且設定當前位置是0。(相當於C程式設計裡的memset或者bzero方法,就是清空這塊記憶體

)說的意思就是:將快取位元組陣列的指標設定為陣列的開始序列即陣列下標0。這樣就可以從buffer開頭,對該buffer進行遍歷(讀取)了。 

  buffer中的flip方法涉及到bufer中的Capacity,Position和Limit三個概念。其中Capacity在讀寫模式下都是固定的,就是我們分配的緩衝大小,Position類似於讀寫指標,表示當前讀(寫)到什麼位置,Limit在寫模式下表示最多能寫入多少資料,此時和Capacity相同,在讀模式下表示最多能讀多少資料,此時和快取中的實際資料大小相同。在寫模式下呼叫flip方法,那麼limit就設定為了position當前的值(即當前寫了多少資料),postion會被置為0,以表示讀操作從快取的頭開始讀。也就是說呼叫flip之後,讀寫指標指到快取頭部,並且設定了最多隻能讀出之前寫入的資料長度(而不是整個快取的容量大小)。