更新时间:2023-08-25 来源:黑马程序员 浏览量:

ByteBuffer是Java中用于处理原始字节数据的类,它提供了一种灵活的方式来创建、读取和写入字节数据。以下是创建和读写ByteBuffer的详细步骤:
  首先,确保导入Java的nio包,因为ByteBuffer是java.nio.ByteBuffer的一部分。
import java.nio.ByteBuffer;
我们可以使用多种方式来创建ByteBuffer,具体取决于我们的需求。
·通过allocate()方法创建:
  使用allocate()方法创建一个指定容量的ByteBuffer。
int capacity = 1024; // 字节容量 ByteBuffer buffer = ByteBuffer.allocate(capacity);
·通过wrap()方法创建:
  使用wrap()方法可以将一个已有的字节数组包装成ByteBuffer。
byte[] byteArray = new byte[1024]; // 一个字节数组 ByteBuffer buffer = ByteBuffer.wrap(byteArray);
·通过其他方式创建:
还有其他方式来创建ByteBuffer,比如使用ByteBuffer.allocateDirect()创建直接ByteBuffer,但这超出了本文的范围。
  使用put()方法将数据写入ByteBuffer。有多种put()方法,可以根据需要选择。
buffer.put((byte) 42); // 写入一个字节 buffer.putInt(123); // 写入一个整数 byte[] data = "Hello, World!".getBytes(); // 要写入的字节数组 buffer.put(data); // 写入字节数组
  使用get()方法从ByteBuffer读取数据。同样,有多种get()方法可供选择。
byte b = buffer.get(); // 读取一个字节 int i = buffer.getInt(); // 读取一个整数 byte[] dest = new byte[buffer.remaining()]; // 创建一个足够大的目标字节数组 buffer.get(dest); // 将ByteBuffer中的数据读取到目标字节数组中
  在写入数据后,通常需要从写模式切换到读模式。为此,可以使用flip()方法来翻转ByteBuffer。
buffer.flip(); // 切换到读模式
  在读取完数据后,我们可以使用clear()方法清空ByteBuffer以准备写入新的数据。
buffer.clear(); // 清空ByteBuffer,切换到写模式
  如果我们使用了直接ByteBuffer,最后不要忘记显式地关闭它们,以释放系统资源。
// 对于直接ByteBuffer,需要释放资源
if (buffer.isDirect()) {
    ((DirectBuffer) buffer).cleaner().clean();
}这就是创建和读写ByteBuffer的基本步骤。请根据我们的具体需求选择适当的方法和操作。ByteBuffer提供了丰富的API,可用于更复杂的操作,如切片、复制等。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19