通过分配新空间或包装或复制现有字节数组、字节缓冲区和字符串来创建新的ByteBuf。
使用静态导入
此类旨在与Java 5静态导入语句一起使用:
import static io.netty.buffer.Unpooled.*;
ByteBuf heapBuffer = buffer(128);
ByteBuf directBuffer = directBuffer(256);
ByteBuf wrappedBuffer = wrappedBuffer(new byte[128], new byte[256]);
ByteBuf copiedBuffer = copiedBuffer(ByteBuffer.allocate(128));
分配新缓冲区
提供了三种现成的缓冲器类型。
- buffer(int) 分配一个新的固定容量堆缓冲区。
- directBuffer(int) 分配一个新的固定容量直接缓冲区。
创建包装缓冲区
包装缓冲区是一个缓冲区,它是一个或多个现有字节数组和字节缓冲区的视图。原始数组或缓冲区内容的任何更改都将在包装的缓冲区中可见。提供了各种包装器方法,它们的名称都是wrappedBuffer()。如果您想创建一个由多个数组组成的缓冲区,以减少内存副本的数量,您可能需要仔细查看接受varargs的方法。
创建复制的缓冲区
复制的缓冲区是一个或多个现有字节数组、字节缓冲区或字符串的深度复制。与包装缓冲区不同,原始数据和复制缓冲区之间没有共享数据。提供了各种复制方法,它们的名称都是copiedBuffer()。使用此操作将多个缓冲区合并为一个缓冲区也很方便。
1. 方法介绍
1.1 wrappedBuffer(byte[] array)
创建一个新的big-endian缓冲区,用于包装指定的数组。对指定数组内容的修改将对返回的缓冲区可见。
2. UnpooledHeapByteBuf类
Big endian Java堆缓冲区实现。建议使用UnpooledByteBufAllocator.heapBuffer(int, int), Unpooled.buffer(int) 和 Unpooled.wrappedBuffer(byte[]),而不是显式调用构造函数。
网友评论