ByteBuffer.reset(); ByteBuffer.rewind(); 分别写例子
时间: 2024-05-01 19:23:11 浏览: 147
`ByteBuffer.reset()` 方法将当前缓冲区的位置重置为其标记位置,即将 `position` 属性设置为该缓冲区最后一次调用 `mark()` 方法时的值。如果该缓冲区从未被标记过,则抛出一个 `InvalidMarkException` 异常。
以下是一个使用 `reset()` 方法的示例:
```java
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("hello".getBytes());
buffer.mark();
buffer.put("world".getBytes());
buffer.reset(); // 将 position 重置为 mark 的位置
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
System.out.println(new String(bytes)); // 输出 "hello"
```
`ByteBuffer.rewind()` 方法将当前缓冲区的位置重置为零,即将 `position` 属性设置为 0。它不影响缓冲区的标记位置或限制位置。
以下是一个使用 `rewind()` 方法的示例:
```java
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("hello".getBytes());
buffer.rewind(); // 将 position 重置为 0
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
System.out.println(new String(bytes)); // 输出 "hello"
```
阅读全文