java.nio.ByteBuffer中flip、rewind、clear方法的區別


對緩沖區的讀寫操作首先要知道緩沖區的下限、上限和當前位置。下面這些變量的值對Buffer類中的某些操作有着至關重要的作用:

  1. limit:所有對Buffer讀寫操作都會以limit變量的值作為上限。
  2. position:代表對緩沖區進行讀寫時,當前游標的位置。
  3. capacity:代表緩沖區的最大容量(一般新建一個緩沖區的時候,limit的值和capacity的值默認是相等的)。

flip、rewind、clear這三個方法便是用來設置這些值的。

clear方法

public final Buffer clear()
{
    position = 0; //重置當前讀寫位置
    limit = capacity; 
    mark = -1;  //取消標記
    return this;
}


clear方法將緩沖區清空,一般是在重新寫緩沖區時調用。

flip方法

public final Buffer flip()  {
 limit = position;
 position = 0;
 mark = -1;
 return this;
}

反轉緩沖區。首先將限制設置為當前位置,然后將位置設置為 0。如果已定義了標記,則丟棄該標記。 常與compact方法一起使用。通常情況下,在准備從緩沖區中讀取數據時調用flip方法。

rewind方法

 

1 public final Buffer rewind()  {
2 position = 0;
3 mark = -1;
4 return this;
5}


以上三種方法均使用final修飾,java.nio.Buffer的所有子類均使用同一種flip、clear和rewind機制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM