Java 中 ByteBuffer 的使用說明


* 可參見 Java 中的 IO 與 socket 編程 [ 復習 ]

 

ByteBuffer 數據類型的說明

public abstract class ByteBuffer {

    // buff即內部用於緩存的數組
    final byte[] hb; 
    
    //為某一讀過的位置做標記,便於某些時候回退到該位置
    private int mark = -1;
    //當前讀取的位置
    private int position = 0;
    //寫數據時,與capacity相等,讀數據時,代表buffer中有效數據的長度。
    private int limit;
    //初始化時候的容量,固定不變
    private int capacity;
    
    //注: 此表達式總是成立: mark <= position <= limit <= capacity
    //... 
}

  

常見方法:

① allocate
創建一個指定capacity的buffer

ByteBuffer buf = ByteBuffer.allocate(4);
hb = new byte[4]
mark = -1
position = 0
limit = 4
capacity = 4

 

② put
寫模式下,將position移動一位, 再往buffer里寫一個字節

buf.put((byte)1);
position = 1
hb[0] = 1

  

③ flip
寫完數據,需要開始讀的時候,將position復位到0,並將limit設置為當前position

buf.flip();
imit = position;
position = 0;
mark = -1;

  

④ get
將position移動一位,並從buffer里讀一個字節

buf.get();`
position = 1
hb[0]

 

⑤ clear
讀完數據,需要重新寫的時候,將position置為0,limit復位到capacity

buf.clear();
position = 0;
limit = capacity;
mark = -1;

 

⑥ mark & reset
mark() 用於標記

buf.mark();
mark = position;

reset() 用於回到標記

buf.reset();
position = mark;

附圖:


233


免責聲明!

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



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