緩衝區Buffer-Buffer 操作基本API
阿新 • • 發佈:2021-01-09
緩衝區實際上是一個容器物件,更直接的說,其實就是一個數組,在NIO 庫中,所有資料都是用緩衝區處理的。在讀取資料時,它是直接讀到緩衝區中的; 在寫入資料時,它也是寫入到緩衝區中的;任何時候訪問NIO 中的資料,都是將它放到緩衝區中。而在面向流I/O 系統中,所有資料都是直接寫入或者直接將資料讀取到Stream 物件中。在NIO 中,所有的緩衝區型別都繼承於抽象類Buffer,最常用的就是ByteBuffer,對於Java 中的基本型別,基本都有一個具體Buffer 型別與之相對應,它們之間的繼承關係如下圖所示:
下面是一個簡單的使用IntBuffer 的例子:
import java.nio.IntBuffer; public class IntBufferDemo { public static void main(String[] args) { // 分配新的int 緩衝區,引數為緩衝區容量 // 新緩衝區的當前位置將為零,其界限(限制位置)將為其容量。它將具有一個底層實現陣列,其陣列偏移量將為零。 IntBuffer buffer = IntBuffer.allocate(8); for (int i = 0; i < buffer.capacity(); ++i) { int j = 2 * (i + 1); // 將給定整數寫入此緩衝區的當前位置,當前位置遞增 buffer.put(j); }/ / 重設此緩衝區,將限制設定為當前位置,然後將當前位置設定為0 buffer.flip(); // 檢視在當前位置和限制位置之間是否有元素 while (buffer.hasRemaining()) { // 讀取此緩衝區當前位置的整數,然後當前位置遞增 int j = buffer.get(); System.out.print(j + " "); } } }