1. 程式人生 > 其它 >緩衝區Buffer-Buffer 操作基本API

緩衝區Buffer-Buffer 操作基本API

緩衝區實際上是一個容器物件,更直接的說,其實就是一個數組,在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 + " ");
	}
	}
}