在Java NIO(New I/O)中,Buffer是一个重要的组件,它作为数据的容器,主要用于数据的读写操作。Buffer本质上是一个内存块,可以写入数据,也可以从中读取数据。
Buffer是一个抽象类,对应于Java的主要数据类型,在NIO中有8种缓冲区类,分别是ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer和MappedByteBuffer。这些不同的Buffer子类对应于Java的主要数据类型,每种子类能操作的数据类型可以通过名称进行判断。
下面是一个使用ByteBuffer的示例,演示了如何向Buffer中写入数据并读取它们:
// 创建一个ByteBuffer对象,初始容量为10
ByteBuffer buffer = ByteBuffer.allocate(10);
// 写入数据
for (int i = 0; i < 5; i++) {
buffer.put((byte) i);
}
// 切换到读模式
buffer.flip();
// 读取数据
while (buffer.hasRemaining()) {
byte b = buffer.get();
System.out.print(b + " ");
}
在这个示例中,我们首先创建了一个容量为10的ByteBuffer对象。然后,通过调用put( )方法向Buffer中写入了5个字节的数据。接下来,调用flip( )方法将Buffer切换到读模式,并通过get( )方法从Buffer中读取数据,直到没有剩余数据为止。