ByteBuffer 是 Java NIO(非阻塞 I/O)包中的一个重要类。它表示一个字节缓冲区,可以用来存储和操作二进制数据。ByteBuffer 提供了多种方法来写入和读取数据,包括:
写入 ByteBuffer
- put() 方法:将单个字节写入 ByteBuffer。
- put(byte[]) 方法:将字节数组写入 ByteBuffer。
- put(ByteBuffer) 方法:将另一个 ByteBuffer 的内容写入当前 ByteBuffer。
- putChar() 方法:将 char 值写入 ByteBuffer。
- putInt() 方法:将 int 值写入 ByteBuffer。
- putLong() 方法:将 long 值写入 ByteBuffer。
- putFloat() 方法:将 float 值写入 ByteBuffer。
- putDouble() 方法:将 double 值写入 ByteBuffer。
读取 ByteBuffer
- get() 方法:读取单个字节。
- get(byte[]) 方法:将数据读入字节数组。
- get(ByteBuffer) 方法:将数据读入另一个 ByteBuffer。
- getChar() 方法:读取 char 值。
- getInt() 方法:读取 int 值。
- getLong() 方法:读取 long 值。
- getFloat() 方法:读取 float 值。
- getDouble() 方法:读取 double 值。
示例:写入数据
以下示例演示如何使用 put()
方法向 ByteBuffer 写入数据:
ByteBuffer buffer = ByteBuffer.allocate(1024);
// 向缓冲区写入一些数据
buffer.put((byte) 1);
buffer.put((byte) 2);
buffer.put((byte) 3);
示例:读取数据
以下示例演示如何使用 get()
方法从 ByteBuffer 读取数据:
ByteBuffer buffer = ...; // 假设 buffer 已写入一些数据
// 重置缓冲区的 position 为 0,以便从头开始读取
buffer.rewind();
// 读取缓冲区中的数据
while (buffer.hasRemaining()) {
byte b = buffer.get();
System.out.println(b);
}
其他方法
除了 put()
和 get()
方法之外,ByteBuffer 还提供其他方法来写入和读取数据,例如:
- compact() 方法:将未读数据移动到缓冲区的开头,并丢弃所有已读数据。
- flip() 方法:将缓冲区的 limit 设置为当前 position,并将 position 设置为 0,以便从头开始读取。
- clear() 方法:将缓冲区的 position 和 limit 重置为 0,并清除所有标记。
结论
ByteBuffer 提供了多种方法来写入和读取数据。了解这些方法对于有效使用 Java NIO 至关重要。