Nio再學習之NIO的buffer緩衝區

lonecloud發表於2018-08-08

1. 緩衝區(Buffer):

介紹

我們知道在BIO(Block IO)中其是使用的流的形式進行讀取,可以將資料直接寫入或者將資料直接讀取到Stream物件中,但是在NIO中所有的資料都是使用的換衝區進行處理的,任何時候訪問NIO的資料都是通過緩衝區進行操作的。

實質:

從下面的原始碼我們可以看到其實這個裡面的ByteBuffer其實裡面是一個陣列,然後提供了一個offset的變數用於對資料進行結構化的訪問以及維護讀寫為位置等資訊。

public abstract class ByteBuffer
    extends Buffer
    implements Comparable<ByteBuffer>
{

    // These fields are declared here rather than in Heap-X-Buffer in order to
    // reduce the number of virtual method invocations needed to access these
    // values, which is especially costly when coding small buffers.
    //
    final byte[] hb;                  // Non-null only for heap buffers
    final int offset;
    boolean isReadOnly;  

  

常見的的Buffer:

1. ByteBuffer:面向位元組的緩衝區

2. CharBuffer:字元緩衝區

3. ShortBuffer:短整形的緩衝區

4. IntBuffer:整形緩衝區

5. FloatBuffer:浮點型緩衝區

6. LongBuffer:長整形緩衝區

7. DoubleBuffer:雙精度浮點型緩衝區

總結:

值得注意的是在Buffer緩衝區中沒有BooleanBuffer緩衝區的實現,以上七中緩衝區的Buffer都是抽象型別。

相關文章