如何在 Java 中写入和读取 ByteBuffer

简介: 【8月更文挑战第22天】

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 至关重要。

目录
相关文章
|
负载均衡 Ubuntu 应用服务中间件
|
NoSQL Java Redis
Spring boot整合Redis实现发布订阅(超详细)
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收信息。微信,微博,关注系统 Redis客户端可以订阅任意数量的频道
9264 0
Spring boot整合Redis实现发布订阅(超详细)
|
消息中间件 Java Shell
RocketMQ的broker启动失败解决
RocketMQ的broker启动失败解决
2429 0
|
存储 Java
如何在 Java 中写入和读取 ByteBuffer
【8月更文挑战第22天】
704 0
|
前端开发 网络协议
netty整合websocket(完美教程)
本文是一篇完整的Netty整合WebSocket的教程,介绍了WebSocket的基本概念、使用Netty构建WebSocket服务器的步骤和代码示例,以及如何创建前端WebSocket客户端进行通信的示例。
1932 2
netty整合websocket(完美教程)
|
网络协议 前端开发 JavaScript
WebSocket 教程汇总指南,从入门到熟练
本文将带你从零开始,逐步掌握 WebSocket 的基本概念、实现方法和应用场景,通过一系列详细的教程和实践案例,帮助你从入门到熟练地使用 WebSocket 技术。无论你是初学者还是有一定经验的开发者,本文都能为你提供有价值的信息和指导。
|
存储 Java
|
Ubuntu 网络协议 关系型数据库