Java 中,怎么读写 ByteBuffer ?
时间: 2024-03-06 14:49:59 浏览: 66
在 Java 中,我们可以通过以下方式来读写 ByteBuffer:
1. 创建 ByteBuffer:
```java
ByteBuffer buffer = ByteBuffer.allocate(1024);
```
2. 写入数据:
```java
// 写入一个 byte
buffer.put((byte) 1);
// 写入一个 short
buffer.putShort((short) 2);
// 写入一个 int
buffer.putInt(3);
// 写入一个 long
buffer.putLong(4L);
// 写入一个 float
buffer.putFloat(5.0f);
// 写入一个 double
buffer.putDouble(6.0);
```
3. 切换读写模式:
在写入数据之后,我们需要将 ByteBuffer 的读写模式切换为读模式,才能读取数据。可以使用 `flip()` 方法来切换读写模式:
```java
buffer.flip();
```
4. 读取数据:
在切换到读模式之后,我们可以通过以下方式来读取数据:
```java
// 读取一个 byte
byte b = buffer.get();
// 读取一个 short
short s = buffer.getShort();
// 读取一个 int
int i = buffer.getInt();
// 读取一个 long
long l = buffer.getLong();
// 读取一个 float
float f = buffer.getFloat();
// 读取一个 double
double d = buffer.getDouble();
```
5. 回到写模式:
在读取数据之后,我们需要将 ByteBuffer 的读写模式切换回写模式,才能继续写入数据。可以使用 `clear()` 或 `compact()` 方法来切换到写模式:
- `clear()` 方法将缓冲区的位置设置为 0,限制设置为容量,即清空缓冲区。
```java
buffer.clear();
```
- `compact()` 方法将所有未读数据移到缓冲区的起始位置,然后将缓冲区的位置设置为未读数据的末尾,限制设置为容量。即将未读取的数据移动到缓冲区的起始位置,方便继续写入数据。
```java
buffer.compact();
```
注意:`clear()` 方法会清空整个缓冲区,包括未读取的数据。而 `compact()` 方法只会清空已读取的数据,未读取的数据将被移动到缓冲区的起始位置。
阅读全文