public abstract class ByteBuf extends java.lang.Object implements ReferenceCounted, java.lang.Comparable<ByteBuf>
byte[]
)和NIO缓冲区提供了一个抽象视图。
Unpooled
中的帮助程序方法创建新缓冲区,而不是调用单个实现的构造函数。
ByteBuf
使用zero-based indexing 。
这意味着第一个字节的索引始终为0
,最后一个字节的索引始终为capacity - 1
。
例如,要迭代缓冲区的所有字节,无论其内部实现如何,都可以执行以下操作:
ByteBuf
buffer = ...;
for (int i = 0; i < buffer.capacity(); i ++) {
byte b = buffer.getByte(i);
System.out.println((char) b);
}
ByteBuf
提供了两个指针变量来支持顺序读取和写入操作 - readerIndex
用于读取操作, writerIndex
用于写入操作。
下图显示了两个指针如何将缓冲区分割为三个区域:
+-------------------+------------------+------------------+
| discardable bytes | readable bytes | writable bytes |
| | (CONTENT) | |
+-------------------+------------------+------------------+
| | | |
0 <= readerIndex <= writerIndex <= capacity
read
或skip
开头的任何操作skip
将获取或跳过当前readerIndex
的数据并将其增加读取字节数。
如果读操作的参数也是ByteBuf
,并且没有指定目标索引,则指定缓冲区的writerIndex
一起增加。
如果没有足够的内容, IndexOutOfBoundsException
引发IndexOutOfBoundsException
。 新分配,打包或复制的缓冲区readerIndex
的默认值是0
。
// Iterates the readable bytes of a buffer.
ByteBuf
buffer = ...;
while (buffer.isReadable()) {
System.out.println(buffer.readByte());
}
write
开头的操作都会将数据写入当前的writerIndex
,并将其增加写入的字节数。
如果写入操作的参数也是ByteBuf
,并且没有指定源索引,则指定缓冲区的readerIndex
将一起增加。
如果没有足够的可写字节,则引发IndexOutOfBoundsException
。 新分配的缓冲区writerIndex
的默认值是0
。 裹或复制缓冲区的默认值writerIndex
是capacity
的缓冲液中。
// Fills the writable bytes of a buffer with random integers.
ByteBuf
buffer = ...;
while (buffer.maxWritableBytes() >= 4) {
buffer.writeInt(random.nextInt());
}
0
,但随着读取操作的执行,其大小增加至writerIndex
。
通过调用discardReadBytes()
可以丢弃读取的字节,以回收未使用的区域,如下图所示:
BEFORE discardReadBytes()
+-------------------+------------------+------------------+
| discardable bytes | readable bytes | writable bytes |
+-------------------+------------------+------------------+
| | | |
0 <= readerIndex <= writerIndex <= capacity
AFTER discardReadBytes()
+------------------+--------------------------------------+
| readable bytes | writable bytes (got more space) |
+------------------+--------------------------------------+
| | |
readerIndex (0) <= writerIndex (decreased) <= capacity
请注意,在调用discardReadBytes()
之后,无法保证可写字节的内容。
可写字节在大多数情况下不会被移动,甚至可能会被完全不同的数据填充,这取决于底层的缓冲区实现。
clear()
将0
和writerIndex
设置为0 。
它不清除缓冲区内容(例如填写0
),但只是清除了两个指针。
另请注意,此操作的语义不同于Buffer.clear()
。
BEFORE clear()
+-------------------+------------------+------------------+
| discardable bytes | readable bytes | writable bytes |
+-------------------+------------------+------------------+
| | | |
0 <= readerIndex <= writerIndex <= capacity
AFTER clear()
+---------------------------------------------------------+
| writable bytes (got more space) |
+---------------------------------------------------------+
| |
0 = readerIndex = writerIndex <= capacity
indexOf(int, int, byte)
和bytesBefore(int, int, byte)
。
bytesBefore(byte)
在处理NUL
终止的字符串时特别有用。
对于复杂的搜索,请使用forEachByte(int, int, ByteProcessor)
和ByteProcessor
实现。
readerIndex
,另一个用于存储writerIndex
。
您可以通过调用重置方法来始终重新定位两个索引中的一个。
它与InputStream
的标记和重置方法InputStream
,但没有readlimit
。
duplicate()
slice()
slice(int, int)
readSlice(int)
retainedDuplicate()
retainedSlice()
retainedSlice(int, int)
readRetainedSlice(int)
readerIndex
, writerIndex
和标记索引,而这股其他内部数据表示,就像一个NIO缓冲器一样。
如果需要全新的现有缓冲区副本,请拨打copy()
方法。
duplicate()
, slice()
, slice(int, int)
和readSlice(int)
不调用retain()
对返回的派生缓冲,因而其引用计数将不会增加。
如果你需要创建一个增加引用计数派生缓冲,可以考虑使用retainedDuplicate()
, retainedSlice()
, retainedSlice(int, int)
和readRetainedSlice(int)
这可能返回产生较少的垃圾一个缓冲区实现。
ByteBuf
由字节数组支持(即byte[]
),则可以通过array()
方法直接访问它。
要确定缓冲区是否由字节数组支持,应使用hasArray()
。
ByteBuf
可以转换为共享其内容(即查看缓冲区)的NIO ByteBuffer
,则可以通过nioBuffer()
方法获取它。
要确定是否可以将缓冲区转换为NIO缓冲区,请使用nioBufferCount()
。
toString(Charset)
方法将ByteBuf
转换为String
。
请注意, toString()
不是一种转换方法。
ByteBufInputStream
和ByteBufOutputStream
。
Constructor and Description |
---|
ByteBuf() |
Modifier and Type | Method and Description |
---|---|
abstract ByteBufAllocator |
alloc()
返回创建此缓冲区的 ByteBufAllocator 。
|
abstract byte[] |
array()
返回此缓冲区的后备字节数组。
|
abstract int |
arrayOffset()
返回此缓冲区的后备字节数组中第一个字节的偏移量。
|
abstract ByteBuf |
asReadOnly()
返回此缓冲区的只读版本。
|
abstract int |
bytesBefore(byte value)
定位此缓冲区中第一次出现的指定
value 。
|
abstract int |
bytesBefore(int length, byte value)
定位此缓冲区中第一次出现的指定
value 。
|
abstract int |
bytesBefore(int index, int length, byte value)
定位此缓冲区中第一次出现的指定
value 。
|
abstract int |
capacity()
返回此缓冲区可包含的字节数(字节)。
|
abstract ByteBuf |
capacity(int newCapacity)
调整此缓冲区的容量。
|
abstract ByteBuf |
clear()
将此缓冲区的
readerIndex 和
writerIndex 设置为
0 。
|
abstract int |
compareTo(ByteBuf buffer)
将指定缓冲区的内容与此缓冲区的内容进行比较。
|
abstract ByteBuf |
copy()
返回此缓冲区可读字节的副本。
|
abstract ByteBuf |
copy(int index, int length)
返回此缓冲区的子区域的副本。
|
abstract ByteBuf |
discardReadBytes()
丢弃第0个索引和
readerIndex 之间的字节。
|
abstract ByteBuf |
discardSomeReadBytes()
类似于
discardReadBytes() ,不同之
处在于此方法可能会丢弃部分,全部或者全部读取字节,具体取决于其内部实现方式,以减少潜在的额外内存消耗为代价降低整体内存带宽消耗。
|
abstract ByteBuf |
duplicate()
返回共享此缓冲区整个区域的缓冲区。
|
abstract ByteBuf |
ensureWritable(int minWritableBytes)
确保
the writable bytes的数量等于或大于指定的值。
|
abstract int |
ensureWritable(int minWritableBytes, boolean force)
尝试确保
the writable bytes的数量等于或大于指定的值。
|
abstract boolean |
equals(java.lang.Object obj)
确定指定缓冲区的内容是否与此数组的内容相同。
|
abstract int |
forEachByte(ByteProcessor processor)
以指定的
processor 按升序对此缓冲区的可读字节进行迭代。
|
abstract int |
forEachByte(int index, int length, ByteProcessor processor)
以指定的
processor 按升序对此缓冲区的指定区域进行迭代。
|
abstract int |
forEachByteDesc(ByteProcessor processor)
使用指定的
processor 以降序遍历此缓冲区的可读字节。
|
abstract int |
forEachByteDesc(int index, int length, ByteProcessor processor)
以指定的
processor 降序遍历此缓冲区的指定区域。
|
abstract boolean |
getBoolean(int index)
在此缓冲区中获取指定绝对(@code索引)的布尔值。
|
abstract byte |
getByte(int index)
在此缓冲区中的指定绝对
index 处获取一个字节。
|
abstract ByteBuf |
getBytes(int index, byte[] dst)
将此缓冲区的数据传输到指定绝对
index 开始的目标。
|
abstract ByteBuf |
getBytes(int index, byte[] dst, int dstIndex, int length)
将此缓冲区的数据传输到指定的绝对目标
index 开始的目标。
|
abstract ByteBuf |
getBytes(int index, ByteBuf dst)
将此缓冲区的数据传输到指定的目的地,从指定的绝对
index 开始,直到目标变为不可写。
|
abstract ByteBuf |
getBytes(int index, java.nio.ByteBuffer dst)
将此缓冲区的数据传输到指定的目标位置,从指定的绝对
index 开始,直到目标位置达到其限制。
|
abstract ByteBuf |
getBytes(int index, ByteBuf dst, int length)
将此缓冲区的数据传输到指定的绝对
index 开始的目标。
|
abstract ByteBuf |
getBytes(int index, ByteBuf dst, int dstIndex, int length)
将此缓冲区的数据传输到指定的绝对目标
index 开始的目标。
|
abstract int |
getBytes(int index, java.nio.channels.FileChannel out, long position, int length)
将此缓冲区的数据从指定的绝对
index 开始
index 到指定的通道,从给定的文件位置开始。
|
abstract int |
getBytes(int index, java.nio.channels.GatheringByteChannel out, int length)
将此缓冲区的数据传输到指定绝对
index 开始的指定通道。
|
abstract ByteBuf |
getBytes(int index, java.io.OutputStream out, int length)
将此缓冲区的数据传输到指定的绝对
index 开始的流。
|
abstract char |
getChar(int index)
在此缓冲区中指定的绝对
index 处获取一个2字节的UTF-16字符。
|
abstract java.lang.CharSequence |
getCharSequence(int index, int length, java.nio.charset.Charset charset)
在给定索引处获得具有给定长度的
CharSequence 。
|
abstract double |
getDouble(int index)
在此缓冲区中的指定绝对
index 处获取一个64位浮点数。
|
double |
getDoubleLE(int index)
以Little Endian Byte Order的形式
index 此缓冲区中指定绝对
index 处的64位浮点数。
|
abstract float |
getFloat(int index)
在此缓冲区中的指定绝对
index 处获取一个32位浮点数。
|
float |
getFloatLE(int index)
以Little Endian Byte Order的
index 在此缓冲区中的指定绝对
index 处获取一个32位浮点数。
|
abstract int |
getInt(int index)
在此缓冲区中的指定绝对
index 处获取一个32位整数。
|
abstract int |
getIntLE(int index)
在此缓冲区中以指定的绝对
index 获取一个32位整数,
index 字节顺序。
|
abstract long |
getLong(int index)
在此缓冲区中的指定绝对
index 处获取一个64位长整数。
|
abstract long |
getLongLE(int index)
以小端字节顺序在此缓冲区中的指定绝对
index 处获取64位长整数。
|
abstract int |
getMedium(int index)
在此缓冲区中的指定绝对
index 处获取一个24位中等整数。
|
abstract int |
getMediumLE(int index)
以小端字节顺序在此缓冲区中的指定绝对
index 处获取一个24位中等整数。
|
abstract short |
getShort(int index)
在此缓冲区中的指定绝对
index 处获取一个16位短整数。
|
abstract short |
getShortLE(int index)
以小端字节顺序在此缓冲区中的指定绝对
index 处获取一个16位短整数。
|
abstract short |
getUnsignedByte(int index)
在此缓冲区中的指定绝对
index 处获取一个无符号字节。
|
abstract long |
getUnsignedInt(int index)
在此缓冲区中指定的绝对
index 处获取一个无符号的32位整数。
|
abstract long |
getUnsignedIntLE(int index)
以Little Endian字节顺序在此缓冲区中的指定绝对
index 处获取无符号的32位整数。
|
abstract int |
getUnsignedMedium(int index)
在此缓冲区中指定的绝对
index 处获取一个无符号的24位中等整数。
|
abstract int |
getUnsignedMediumLE(int index)
以Little Endian字节顺序在此缓冲区中的指定绝对
index 处获取无符号的24位中等整数。
|
abstract int |
getUnsignedShort(int index)
在此缓冲区中指定的绝对
index 处获取一个无符号的16位短整数。
|
abstract int |
getUnsignedShortLE(int index)
以Little Endian Byte Order的形式
index 此缓冲区中指定绝对
index 的无符号16位短整数。
|
abstract boolean |
hasArray()
当且仅当此缓冲区有一个后备字节数组时,才返回
true 。
|
abstract int |
hashCode()
返回从此缓冲区的内容计算出来的哈希码。
|
abstract boolean |
hasMemoryAddress()
当且仅当此缓冲区具有对指向后备数据的低级内存地址的引用时才返回
true 。
|
abstract int |
indexOf(int fromIndex, int toIndex, byte value)
在此缓冲区中找到指定
value 的第一个匹配项。
|
abstract java.nio.ByteBuffer |
internalNioBuffer(int index, int length)
仅内部使用:公开内部NIO缓冲区。
|
abstract boolean |
isDirect()
当且仅当此缓冲区由NIO直接缓冲区支持时才返回
true 。
|
abstract boolean |
isReadable()
返回
true 当且仅当
(this.writerIndex - this.readerIndex) 大于
0 。
|
abstract boolean |
isReadable(int size)
当且仅当此缓冲区包含等于或多于指定数量的元素时才返回
true 。
|
abstract boolean |
isReadOnly()
当且仅当此缓冲区为只读时才返回
true 。
|
abstract boolean |
isWritable()
返回
true 当且仅当
(this.capacity - this.writerIndex) 大于
0 。
|
abstract boolean |
isWritable(int size)
当且仅当此缓冲区有足够空间允许写入指定数量的元素时才返回
true 。
|
abstract ByteBuf |
markReaderIndex()
在此缓冲区中标记当前
readerIndex 。
|
abstract ByteBuf |
markWriterIndex()
在此缓冲区中标记当前
writerIndex 。
|
abstract int |
maxCapacity()
返回此缓冲区允许的最大容量。
|
abstract int |
maxWritableBytes()
返回可写入的最大字节数,等于
(this.maxCapacity - this.writerIndex) 。
|
abstract long |
memoryAddress()
返回指向备份数据第一个字节的低级内存地址。
|
abstract java.nio.ByteBuffer |
nioBuffer()
将此缓冲区的可读字节作为NIO
ByteBuffer 。
|
abstract java.nio.ByteBuffer |
nioBuffer(int index, int length)
将此缓冲区的子区域公开为NIO
ByteBuffer 。
|
abstract int |
nioBufferCount()
返回构成此缓冲区的NIO
ByteBuffer 的最大数量。
|
abstract java.nio.ByteBuffer[] |
nioBuffers()
以NIO
ByteBuffer 的形式公开此缓冲区的可读字节。
|
abstract java.nio.ByteBuffer[] |
nioBuffers(int index, int length)
将此缓冲区的字节公开为指定索引和长度的NIO
ByteBuffer 返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此索引和标记缓冲。
|
abstract java.nio.ByteOrder |
order()
已过时。
使用Little Endian访问器,例如
getShortLE 和getIntLE 而不是使用交换的endianness 创建缓冲区。
|
abstract ByteBuf |
order(java.nio.ByteOrder endianness)
已过时。
使用小端存取,如
getShortLE , getIntLE ,而不是用交换创建一个缓冲区endianness 。
|
abstract int |
readableBytes()
返回等于
(this.writerIndex - this.readerIndex) 的可读字节数。
|
abstract boolean |
readBoolean()
获取当前
readerIndex 的布尔值,并在此缓冲区
readerIndex
1 增加
readerIndex 。
|
abstract byte |
readByte()
获取当前
readerIndex 一个字节,并在此缓冲区
readerIndex
1 增加
readerIndex 。
|
abstract ByteBuf |
readBytes(byte[] dst)
将此缓冲区的数据传输到指定的目标,从当前的
readerIndex 开始,并将
readerIndex 增加
readerIndex 所传输的字节数(=
dst.length )。
|
abstract ByteBuf |
readBytes(byte[] dst, int dstIndex, int length)
传输此缓冲区的数据到指定的目标并从当前
readerIndex 并增加了
readerIndex 由传输的字节(=数量
length )。
|
abstract ByteBuf |
readBytes(ByteBuf dst)
将此缓冲区的数据传输到指定的目标,从当前的
readerIndex 开始,直到目标变为不可写入,并将
readerIndex 增加
readerIndex 所传输的字节数。
|
abstract ByteBuf |
readBytes(java.nio.ByteBuffer dst)
将此缓冲区的数据传输到指定的目标,从当前的
readerIndex 开始,直到目标的位置达到其限制,并将
readerIndex 增加
readerIndex 传输的字节数。
|
abstract ByteBuf |
readBytes(ByteBuf dst, int length)
传输此缓冲区的数据到指定的目标并从当前
readerIndex 并增加了
readerIndex 由传输的字节(=数量
length )。
|
abstract ByteBuf |
readBytes(ByteBuf dst, int dstIndex, int length)
传输此缓冲区的数据到指定的目标并从当前
readerIndex 并增加了
readerIndex 由传输的字节(=数量
length )。
|
abstract int |
readBytes(java.nio.channels.FileChannel out, long position, int length)
将此缓冲区的数据从当前
readerIndex 开始
readerIndex 到指定通道,从给定的文件位置开始。
|
abstract int |
readBytes(java.nio.channels.GatheringByteChannel out, int length)
将此缓冲区的数据传输到从当前
readerIndex 开始的指定流。
|
abstract ByteBuf |
readBytes(int length)
传输此缓冲区的数据到一个新创建的缓冲器并从当前
readerIndex 并增加了
readerIndex 由传输的字节(=数量
length )。
|
abstract ByteBuf |
readBytes(java.io.OutputStream out, int length)
将此缓冲区的数据传输到当前
readerIndex 开始的指定流。
|
abstract char |
readChar()
在当前
readerIndex 处获取一个2字节的UTF-16字符,并在此缓冲区
readerIndex
2 增加
readerIndex 。
|
abstract java.lang.CharSequence |
readCharSequence(int length, java.nio.charset.Charset charset)
获取一个
CharSequence 与所述给定长度在当前
readerIndex 并增加了
readerIndex 由给定的长度。
|
abstract double |
readDouble()
在当前
readerIndex 处获取64位浮点数,并在此缓冲区
readerIndex
8 增加
readerIndex 。
|
double |
readDoubleLE()
在当前
readerIndex 以Little Endian字节顺序获取一个64位浮点数,
8 在此缓冲区
readerIndex
8 增加
readerIndex 。
|
abstract int |
readerIndex()
返回此缓冲区的
readerIndex 。
|
abstract ByteBuf |
readerIndex(int readerIndex)
设置此缓冲区的
readerIndex 。
|
abstract float |
readFloat()
在当前
readerIndex 处获取32位浮点数,并在此缓冲区
readerIndex
4 增加
readerIndex 。
|
float |
readFloatLE()
在Little Endian Byte Order获取当前
readerIndex 的32位浮点数,
4 在此缓冲区
readerIndex
4 增加
readerIndex 。
|
abstract int |
readInt()
在当前
readerIndex 处获取一个32位整数,并在此缓冲区
readerIndex
4 增加
readerIndex 。
|
abstract int |
readIntLE()
在Little Endian Byte Order中获取当前
readerIndex 的32位整数,并在此缓冲区
readerIndex
4 增加
readerIndex 。
|
abstract long |
readLong()
在当前
readerIndex 处获取64位整数,并在此缓冲区
readerIndex
8 增加
readerIndex 。
|
abstract long |
readLongLE()
在小尾字节顺序的当前
readerIndex 处获取64位整数,并在此缓冲区
readerIndex
8 增加
readerIndex 。
|
abstract int |
readMedium()
在当前
readerIndex 处获取24位中等整数,并在此缓冲区
readerIndex
3 增加
readerIndex 。
|
abstract int |
readMediumLE()
以小端字节顺序获取当前
readerIndex 中的24位中等整数,并在此缓冲区
readerIndex
3 增加
readerIndex 。
|
abstract ByteBuf |
readRetainedSlice(int length)
从当前
readerIndex 开始返回此缓冲区的子区域的新保留切片,并将
readerIndex 增加
readerIndex 新切片的大小(=
length )。
|
abstract short |
readShort()
在当前
readerIndex 处获取一个16位短整数,并在此缓冲区
readerIndex
2 增加
readerIndex 。
|
abstract short |
readShortLE()
在小端字节顺序的当前
readerIndex 处获取一个16位短整数,并在此缓冲区中增加
readerIndex
2 。
|
abstract ByteBuf |
readSlice(int length)
从当前
readerIndex 开始返回此缓冲区的子区域的新切片,并将
readerIndex 增加
readerIndex 新切片的大小(=
length )。
|
abstract short |
readUnsignedByte()
获取当前
readerIndex 的无符号字节,并在此缓冲区
readerIndex
1 增加
readerIndex 。
|
abstract long |
readUnsignedInt()
在当前
readerIndex 处获取一个无符号的32位整数,并在此缓冲区
readerIndex
4 增加
readerIndex 。
|
abstract long |
readUnsignedIntLE()
在Little Endian Byte Order中获取当前
readerIndex 的无符号32位整数,并在此缓冲区
readerIndex
4 增加
readerIndex 。
|
abstract int |
readUnsignedMedium()
获取当前
readerIndex 的无符号24位中等整数,并在此缓冲区
readerIndex
3 增加
readerIndex
3 。
|
abstract int |
readUnsignedMediumLE()
在小端字节顺序的当前
readerIndex 处获取一个无符号的24位中等整数,并在此缓冲区
readerIndex
3 增加
readerIndex 。
|
abstract int |
readUnsignedShort()
在当前
readerIndex 处获取一个无符号的16位短整数,并在此缓冲区
readerIndex
2 增加
readerIndex 。
|
abstract int |
readUnsignedShortLE()
在当前
readerIndex 以Little Endian字节顺序获取一个无符号的16位短整数,并在此缓冲区
readerIndex
2 增加
readerIndex 。
|
abstract ByteBuf |
resetReaderIndex()
将当前
readerIndex 重新定位到此缓冲区中标记为
readerIndex 。
|
abstract ByteBuf |
resetWriterIndex()
将当前
writerIndex 重新定位到此缓冲区中标记为
writerIndex 。
|
abstract ByteBuf |
retain()
将参考计数增加
1 。
|
abstract ByteBuf |
retain(int increment)
增加参考计数
increment 。
|
abstract ByteBuf |
retainedDuplicate()
返回共享此缓冲区整个区域的保留缓冲区。
|
abstract ByteBuf |
retainedSlice()
返回此缓冲区可读字节的保留片段。
|
abstract ByteBuf |
retainedSlice(int index, int length)
返回此缓冲区的子区域的保留切片。
|
abstract ByteBuf |
setBoolean(int index, boolean value)
在此缓冲区中的指定绝对
index 处设置指定的布尔值。
|
abstract ByteBuf |
setByte(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的字节。
|
abstract ByteBuf |
setBytes(int index, byte[] src)
将指定的源数组的数据传输到此缓冲区,从指定的绝对
index 。
|
abstract ByteBuf |
setBytes(int index, byte[] src, int srcIndex, int length)
将指定的源数组的数据传输到此缓冲区,从指定的绝对
index 。
|
abstract ByteBuf |
setBytes(int index, ByteBuf src)
将指定的源缓冲区的数据从指定的绝对
index 开始传输到此缓冲区,直到源缓冲区变得不可读。
|
abstract ByteBuf |
setBytes(int index, java.nio.ByteBuffer src)
将指定的源缓冲区的数据从指定的绝对
index 开始传输到此缓冲区,直到源缓冲区的位置达到其限制。
|
abstract ByteBuf |
setBytes(int index, ByteBuf src, int length)
将指定的源缓冲区的数据从指定的绝对
index 开始传送到此缓冲区。
|
abstract ByteBuf |
setBytes(int index, ByteBuf src, int srcIndex, int length)
将指定的源缓冲区的数据从指定的绝对
index 开始传输到此缓冲区。
|
abstract int |
setBytes(int index, java.nio.channels.FileChannel in, long position, int length)
将从给定文件位置开始的指定源通道的内容传输到此缓冲区,从指定的绝对
index 。
|
abstract int |
setBytes(int index, java.io.InputStream in, int length)
将指定源流的内容从指定绝对
index 开始传输到此缓冲区。
|
abstract int |
setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length)
将指定源通道的内容从指定绝对
index 开始传送到此缓冲区。
|
abstract ByteBuf |
setChar(int index, int value)
在此缓冲区的指定绝对
index 处设置指定的2字节UTF-16字符。
|
abstract int |
setCharSequence(int index, java.lang.CharSequence sequence, java.nio.charset.Charset charset)
将指定
CharSequence 在当前
writerIndex 并增加了
writerIndex 由写入的字节。
|
abstract ByteBuf |
setDouble(int index, double value)
在此缓冲区中的指定绝对
index 处设置指定的64位浮点数。
|
ByteBuf |
setDoubleLE(int index, double value)
以小端字节顺序在此缓冲区中的指定绝对
index 处设置指定的64位浮点数。
|
abstract ByteBuf |
setFloat(int index, float value)
在此缓冲区中的指定绝对
index 处设置指定的32位浮点数。
|
ByteBuf |
setFloatLE(int index, float value)
以小端字节顺序在此缓冲区中的指定绝对
index 处设置指定的32位浮点数。
|
abstract ByteBuf |
setIndex(int readerIndex, int writerIndex)
readerIndex 设置此缓冲区的
readerIndex 和
writerIndex 。
|
abstract ByteBuf |
setInt(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的32位整数。
|
abstract ByteBuf |
setIntLE(int index, int value)
以小端字节顺序在此缓冲区中的指定绝对
index 处设置指定的32位整数。
|
abstract ByteBuf |
setLong(int index, long value)
在此缓冲区的指定绝对
index 处设置指定的64位长整数。
|
abstract ByteBuf |
setLongLE(int index, long value)
以小端字节顺序在此缓冲区中的指定绝对
index 处设置指定的64位长整数。
|
abstract ByteBuf |
setMedium(int index, int value)
在此缓冲区中指定的绝对
index 处设置指定的24位中等整数。
|
abstract ByteBuf |
setMediumLE(int index, int value)
以小端字节顺序在此缓冲区中的指定绝对
index 处设置指定的24位中等整数。
|
abstract ByteBuf |
setShort(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的16位短整数。
|
abstract ByteBuf |
setShortLE(int index, int value)
使用Little Endian Byte Order在此缓冲区中的指定绝对
index 处设置指定的16位短整数。
|
abstract ByteBuf |
setZero(int index, int length)
NUL (0x00)从指定的绝对
index 开始填充此缓冲区。
|
abstract ByteBuf |
skipBytes(int length)
在此缓冲区中,按指定的
length 增加
readerIndex 的当前
readerIndex 。
|
abstract ByteBuf |
slice()
返回此缓冲区可读字节的一部分。
|
abstract ByteBuf |
slice(int index, int length)
返回此缓冲区的子区域的一部分。
|
abstract java.lang.String |
toString()
返回此缓冲区的字符串表示形式。
|
abstract java.lang.String |
toString(java.nio.charset.Charset charset)
将此缓冲区的可读字节解码为具有指定字符集名称的字符串。
|
abstract java.lang.String |
toString(int index, int length, java.nio.charset.Charset charset)
将此缓冲区的子区域解码为具有指定字符集的字符串。
|
abstract ByteBuf |
touch()
记录此对象的当前访问位置以进行调试。
|
abstract ByteBuf |
touch(java.lang.Object hint)
记录此对象的当前访问位置,并附加一些用于调试的任意信息。
|
abstract ByteBuf |
unwrap()
如果此缓冲区是另一个缓冲区的包装,则返回底层缓冲区实例。
|
abstract int |
writableBytes()
返回等于
(this.capacity - this.writerIndex) 的可写入字节数。
|
abstract ByteBuf |
writeBoolean(boolean value)
在当前
writerIndex 处设置指定的布尔值,并在此缓冲区
writerIndex
1 增加
writerIndex 。
|
abstract ByteBuf |
writeByte(int value)
在当前
writerIndex 处设置指定的字节,并在此缓冲区
writerIndex
1 增加
writerIndex 。
|
abstract ByteBuf |
writeBytes(byte[] src)
指定的源阵列的数据传送到该缓冲液并从当前
writerIndex 并增加了
writerIndex 由传输的字节(=数量
src.length )。
|
abstract ByteBuf |
writeBytes(byte[] src, int srcIndex, int length)
指定的源阵列的数据传送到该缓冲液并从当前
writerIndex 并增加了
writerIndex 由传输的字节(=数量
length )。
|
abstract ByteBuf |
writeBytes(ByteBuf src)
将指定源缓冲区的数据从当前
writerIndex 开始传输到此缓冲区,直到源缓冲区变得不可读,并将传输字节数增加
writerIndex 。
|
abstract ByteBuf |
writeBytes(java.nio.ByteBuffer src)
将指定源缓冲区的数据传输到此缓冲区,从当前
writerIndex 开始,直到源缓冲区的位置达到其限制,并将传输字节数增加
writerIndex 。
|
abstract ByteBuf |
writeBytes(ByteBuf src, int length)
将指定源缓冲区的数据传输到此缓冲区,从当前的
writerIndex 开始,并将
writerIndex 增加
writerIndex 所传输的字节数(=
length )。
|
abstract ByteBuf |
writeBytes(ByteBuf src, int srcIndex, int length)
指定的源缓冲区的数据传送到该缓冲液并从当前
writerIndex 并增加了
writerIndex 由传输的字节(=数量
length )。
|
abstract int |
writeBytes(java.nio.channels.FileChannel in, long position, int length)
将从给定文件位置开始的指定通道的内容传输到此缓冲区,从当前
writerIndex 开始,并将传输字节数增加
writerIndex 。
|
abstract int |
writeBytes(java.io.InputStream in, int length)
将指定流的内容从当前
writerIndex 开始传送到此缓冲区,并将传送的字节数增加到
writerIndex 。
|
abstract int |
writeBytes(java.nio.channels.ScatteringByteChannel in, int length)
将指定通道的内容从当前
writerIndex 开始传送到此缓冲区,并将传送的字节数增加到
writerIndex 。
|
abstract ByteBuf |
writeChar(int value)
在当前
writerIndex 处设置指定的2字节UTF-16字符,并在此缓冲区
writerIndex
2 增加
writerIndex 。
|
abstract int |
writeCharSequence(java.lang.CharSequence sequence, java.nio.charset.Charset charset)
写入指定的
CharSequence 在当前的
writerIndex ,
writerIndex 写入的字节增加
writerIndex 。
|
abstract ByteBuf |
writeDouble(double value)
在当前
writerIndex 处设置指定的64位浮点数,并在此缓冲区
writerIndex
8 增加
writerIndex 。
|
ByteBuf |
writeDoubleLE(double value)
以小端字节顺序在当前
writerIndex 处设置指定的64位浮点数,
8 在此缓冲区
writerIndex
8 增加
writerIndex 。
|
abstract ByteBuf |
writeFloat(float value)
在当前
writerIndex 处设置指定的32位浮点数,并在此缓冲区
writerIndex
4 增加
writerIndex 。
|
ByteBuf |
writeFloatLE(float value)
以小端字节顺序在当前
writerIndex 处设置指定的32位浮点数,
4 在此缓冲区中增加
writerIndex
4 。
|
abstract ByteBuf |
writeInt(int value)
在当前
writerIndex 处设置指定的32位整数,并在此缓冲区
writerIndex
4 增加
writerIndex 。
|
abstract ByteBuf |
writeIntLE(int value)
以小端字节顺序在当前
writerIndex 处设置指定的32位整数,并在此缓冲区
writerIndex
4 增加
writerIndex 。
|
abstract ByteBuf |
writeLong(long value)
在当前
writerIndex 处设置指定的64位长整数,并在此缓冲区
writerIndex
8 增加
writerIndex 。
|
abstract ByteBuf |
writeLongLE(long value)
以小端字节顺序在当前
writerIndex 处设置指定的64位长整数,并在此缓冲区
writerIndex
8 增加
writerIndex 。
|
abstract ByteBuf |
writeMedium(int value)
在当前
writerIndex 处设置指定的24位中等整数,并在此缓冲区
writerIndex
3 增加
writerIndex 。
|
abstract ByteBuf |
writeMediumLE(int value)
以小端字节顺序在当前
writerIndex 中设置指定的24位中等整数,并在此缓冲区
writerIndex
3 增加
writerIndex 。
|
abstract int |
writerIndex()
返回此缓冲区的
writerIndex 。
|
abstract ByteBuf |
writerIndex(int writerIndex)
设置此缓冲区的
writerIndex 。
|
abstract ByteBuf |
writeShort(int value)
在当前
writerIndex 处设置指定的16位短整数,并在此缓冲区
writerIndex
2 增加
writerIndex 。
|
abstract ByteBuf |
writeShortLE(int value)
在当前
writerIndex 处设置Little Endian Byte Order中指定的16位短整数,并在此缓冲区
writerIndex
2 增加
writerIndex 。
|
abstract ByteBuf |
writeZero(int length)
用
NUL (0x00)从当前
writerIndex开始填充此缓冲区,
然后将
writerIndex 增加
writerIndex 指定的
length 。
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
refCnt, release, release
public abstract int capacity()
public abstract ByteBuf capacity(int newCapacity)
newCapacity
小于当前容量,则此缓冲区的内容将被截断。
如果newCapacity
大于当前容量,则缓冲区会附加长度为(newCapacity - currentCapacity)
未指定数据。
public abstract int maxCapacity()
capacity(int)
或ensureWritable(int)
增加此缓冲区的容量超出最大容量,那么这些方法将引发IllegalArgumentException
。
public abstract ByteBufAllocator alloc()
ByteBufAllocator
。
@Deprecated public abstract java.nio.ByteOrder order()
getShortLE
, getIntLE
,而不是用交换创建一个缓冲区endianness
。
@Deprecated public abstract ByteBuf order(java.nio.ByteOrder endianness)
getShortLE
, getIntLE
,而不是用交换创建一个缓冲区endianness
。
endianness
的缓冲区,该缓冲区共享此缓冲区的整个区域,索引和标记。
修改返回的缓冲区或此缓冲区的内容,索引或标记会影响彼此的内容,索引和标记。
如果指定的endianness
与此缓冲区的字节顺序相同,则此方法可返回this
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public abstract ByteBuf unwrap()
null
如果这个缓冲区不是包装
public abstract boolean isDirect()
true
。
public abstract boolean isReadOnly()
true
。
public abstract ByteBuf asReadOnly()
public abstract int readerIndex()
readerIndex
。
public abstract ByteBuf readerIndex(int readerIndex)
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
readerIndex
小于
0
或大于
this.writerIndex
public abstract int writerIndex()
writerIndex
。
public abstract ByteBuf writerIndex(int writerIndex)
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
writerIndex
小于
this.readerIndex
或大于
this.capacity
public abstract ByteBuf setIndex(int readerIndex, int writerIndex)
readerIndex
设置此缓冲区的readerIndex
和writerIndex
。
当您不得不担心readerIndex(int)
和writerIndex(int)
方法的调用顺序时,此方法非常有用。
例如,以下代码将失败:
// Create a buffer whose readerIndex, writerIndex and capacity are
// 0, 0 and 8 respectively.
ByteBuf
buf = Unpooled
.buffer(8);
// IndexOutOfBoundsException is thrown because the specified
// readerIndex (2) cannot be greater than the current writerIndex (0).
buf.readerIndex(2);
buf.writerIndex(4);
以下代码也将失败:
// Create a buffer whose readerIndex, writerIndex and capacity are
// 0, 8 and 8 respectively.
ByteBuf
buf = Unpooled
.wrappedBuffer(new byte[8]);
// readerIndex becomes 8.
buf.readLong();
// IndexOutOfBoundsException is thrown because the specified
// writerIndex (4) cannot be less than the current readerIndex (8).
buf.writerIndex(4);
buf.readerIndex(2);
相比之下,只要指定的索引满足基本约束,该方法就保证它不会抛出IndexOutOfBoundsException
,无论缓冲区的当前索引值是什么:
// No matter what the current state of the buffer is, the following
// call always succeeds as long as the capacity of the buffer is not
// less than 4.
buf.setIndex(2, 4);
java.lang.IndexOutOfBoundsException
- 如果指定的
readerIndex
小于0,如果指定的
writerIndex
小于指定的
readerIndex
或者指定的
writerIndex
大于
this.capacity
public abstract int readableBytes()
(this.writerIndex - this.readerIndex)
的可读字节数。
public abstract int writableBytes()
(this.capacity - this.writerIndex)
的可写入字节数。
public abstract int maxWritableBytes()
(this.maxCapacity - this.writerIndex)
。
public abstract boolean isReadable()
true
当且仅当
(this.writerIndex - this.readerIndex)
大于
0
。
public abstract boolean isReadable(int size)
true
。
public abstract boolean isWritable()
true
当且仅当
(this.capacity - this.writerIndex)
大于
0
。
public abstract boolean isWritable(int size)
true
。
public abstract ByteBuf clear()
readerIndex
和writerIndex
设置为0
。
该方法与setIndex(0, 0)
相同。
请注意,此方法的行为与NIO缓冲区的行为不同,后者将limit
设置为limit
的capacity
。
public abstract ByteBuf markReaderIndex()
readerIndex
。
您可以重新定位当前readerIndex
到标记readerIndex
通过调用resetReaderIndex()
。
标记的初始值readerIndex
是0
。
public abstract ByteBuf resetReaderIndex()
readerIndex
重新定位到此缓冲区中标记为
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果当前
writerIndex
小于标记
readerIndex
public abstract ByteBuf markWriterIndex()
writerIndex
。
您可以重新定位当前writerIndex
到标记writerIndex
通过调用resetWriterIndex()
。
标记writerIndex
的初始值是0
。
public abstract ByteBuf resetWriterIndex()
writerIndex
重新定位到此缓冲区中标记为
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果当前
readerIndex
大于标记
writerIndex
public abstract ByteBuf discardReadBytes()
readerIndex
之间的字节。
它移动之间的字节readerIndex
和writerIndex
至第0索引,并且设置readerIndex
和writerIndex
至0
和oldWriterIndex - oldReaderIndex
分别。
请参阅班级文件以获得更详细的解释。
public abstract ByteBuf discardSomeReadBytes()
discardReadBytes()
,不同之
处在于此方法可能会放弃部分,全部或者全部读取字节,具体取决于其内部实现方式,以减少潜在的额外内存消耗为代价降低整体内存带宽消耗。
public abstract ByteBuf ensureWritable(int minWritableBytes)
minWritableBytes
- 可写入字节的预期最小数量
java.lang.IndexOutOfBoundsException
- 如果
writerIndex()
+
minWritableBytes
>
maxCapacity()
public abstract int ensureWritable(int minWritableBytes, boolean force)
ensureWritable(int)
不同,此方法不引发异常但返回代码。
minWritableBytes
- 可写入字节的预期最小数量
force
- 当writerIndex()
+ minWritableBytes
> maxCapacity()
:
true
- 缓冲区的容量扩大到maxCapacity()
false
- 缓冲区容量不变 0
如果缓冲区有足够的可写字节,并且其容量不变。
1
如果缓冲区没有足够的字节,并且其容量不变。
2
如果缓冲区有足够的可写字节,并且其容量已增加。
3
如果缓冲区没有足够的字节,但其容量已增加到其最大值。
public abstract boolean getBoolean(int index)
readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 1
大于
this.capacity
public abstract byte getByte(int index)
index
一个字节。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 1
大于
this.capacity
public abstract short getUnsignedByte(int index)
index
处获取一个无符号字节。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 1
大于
this.capacity
public abstract short getShort(int index)
index
处获取一个16位短整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract short getShortLE(int index)
index
处获取一个16位短整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract int getUnsignedShort(int index)
index
处获取一个无符号的16位短整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract int getUnsignedShortLE(int index)
index
处获取一个无符号的16位短整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract int getMedium(int index)
index
处获取一个24位中等整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract int getMediumLE(int index)
index
处获取一个24位中等整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract int getUnsignedMedium(int index)
index
处获取一个无符号的24位中等整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract int getUnsignedMediumLE(int index)
index
处获取无符号的24位中等整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract int getInt(int index)
index
处获取一个32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract int getIntLE(int index)
index
处获取一个32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract long getUnsignedInt(int index)
index
处获取一个无符号的32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract long getUnsignedIntLE(int index)
index
处获取一个无符号的32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract long getLong(int index)
index
处获取一个64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract long getLongLE(int index)
index
处获取64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract char getChar(int index)
index
处获取一个2字节的UTF-16字符。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract float getFloat(int index)
index
处获取一个32位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public float getFloatLE(int index)
index
处获取32位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract double getDouble(int index)
index
处获取一个64位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public double getDoubleLE(int index)
index
处获取64位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract ByteBuf getBytes(int index, ByteBuf dst)
index
开始,直到目标变为不可写。
此方法与getBytes(int, ByteBuf, int, int)
基本相同,不同之writerIndex
于此方法将目标的writerIndex
增加了传输字节数,而getBytes(int, ByteBuf, int, int)
则不增加。
此方法不会修改源缓冲区的readerIndex
或writerIndex
(即this
)。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + dst.writableBytes
大于
this.capacity
public abstract ByteBuf getBytes(int index, ByteBuf dst, int length)
index
开始的目标index
。
此方法与getBytes(int, ByteBuf, int, int)
基本相同,只是此方法通过传输字节数增加目标的writerIndex
,而getBytes(int, ByteBuf, int, int)
则不增加。
此方法不会修改源缓冲区的readerIndex
或writerIndex
(即this
)。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果
index + length
大于
this.capacity
,或者
length
大于
dst.writableBytes
public abstract ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length)
index
开始的目标。
此方法不会修改源(即this
)和目标的readerIndex
或writerIndex
。
dstIndex
- 目的地的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果指定的
dstIndex
小于
0
,如果
index + length
大于
this.capacity
,或者
dstIndex + length
大于
dst.capacity
public abstract ByteBuf getBytes(int index, byte[] dst)
index
开始的目标。
此方法不会修改此缓冲区的readerIndex
或writerIndex
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + dst.length
大于
this.capacity
public abstract ByteBuf getBytes(int index, byte[] dst, int dstIndex, int length)
index
开始的目标。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
dstIndex
- 目的地的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果指定的
dstIndex
小于
0
,如果
index + length
大于
this.capacity
,或者
dstIndex + length
大于
dst.length
public abstract ByteBuf getBytes(int index, java.nio.ByteBuffer dst)
index
开始,直到目标位置达到其限制。
此方法不会修改此缓冲区的readerIndex
或writerIndex
,而目标的position
将会增加。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + dst.remaining()
大于
this.capacity
public abstract ByteBuf getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOException
index
流。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的流在I / O期间抛出异常
public abstract int getBytes(int index, java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
index
开始的通道。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
length
- 传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract int getBytes(int index, java.nio.channels.FileChannel out, long position, int length) throws java.io.IOException
index
开始index
到指定的通道,从给定的文件位置开始。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
此方法不会修改频道的位置。
position
- 传输开始的文件位置
length
- 传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract java.lang.CharSequence getCharSequence(int index, int length, java.nio.charset.Charset charset)
CharSequence
。
length
- 要阅读的长度
charset
- 应该使用
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract ByteBuf setBoolean(int index, boolean value)
index
处设置指定的布尔值。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 1
大于
this.capacity
public abstract ByteBuf setByte(int index, int value)
index
处设置指定的字节。
指定值的24个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 1
大于
this.capacity
public abstract ByteBuf setShort(int index, int value)
index
处设置指定的16位短整数。
指定值的16个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract ByteBuf setShortLE(int index, int value)
index
处设置指定的16位短整数。
指定值的16个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract ByteBuf setMedium(int index, int value)
index
处设置指定的24位中等整数。
请注意,最高有效字节在指定值中被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract ByteBuf setMediumLE(int index, int value)
index
处设置指定的24位中等整数。
请注意,最高有效字节在指定值中被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 3
大于
this.capacity
public abstract ByteBuf setInt(int index, int value)
index
处设置指定的32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract ByteBuf setIntLE(int index, int value)
index
处设置指定的32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract ByteBuf setLong(int index, long value)
index
处设置指定的64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract ByteBuf setLongLE(int index, long value)
index
处设置指定的64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract ByteBuf setChar(int index, int value)
index
处设置指定的2字节UTF-16字符。
指定值的16个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 2
大于
this.capacity
public abstract ByteBuf setFloat(int index, float value)
index
处设置指定的32位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public ByteBuf setFloatLE(int index, float value)
index
处设置指定的32位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 4
大于
this.capacity
public abstract ByteBuf setDouble(int index, double value)
index
处设置指定的64位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public ByteBuf setDoubleLE(int index, double value)
index
处设置指定的64位浮点数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或
index + 8
大于
this.capacity
public abstract ByteBuf setBytes(int index, ByteBuf src)
index
开始传输到此缓冲区,直到源缓冲区变得不可读。
此方法与setBytes(int, ByteBuf, int, int)
基本相同,只是此方法将源缓冲区的readerIndex
增加了传输字节数,而setBytes(int, ByteBuf, int, int)
则不增加。
此方法不会修改源缓冲区的readerIndex
或writerIndex
(即this
)。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + src.readableBytes
大于
this.capacity
public abstract ByteBuf setBytes(int index, ByteBuf src, int length)
index
开始传输到此缓冲区。
此方法与setBytes(int, ByteBuf, int, int)
基本相同, 区别在于此方法将源缓冲区的readerIndex
增加了传输字节数,而setBytes(int, ByteBuf, int, int)
则不增加。
此方法不会修改源缓冲区的readerIndex
或writerIndex
(即this
)。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果
index + length
大于
this.capacity
,或者
length
大于
src.readableBytes
public abstract ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length)
index
开始传送到此缓冲区。
此方法不会修改源(即this
)和目标的readerIndex
或writerIndex
。
srcIndex
- 来源的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果指定的
srcIndex
小于
0
,如果
index + length
大于
this.capacity
,或者
srcIndex + length
大于
src.capacity
public abstract ByteBuf setBytes(int index, byte[] src)
index
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + src.length
大于
this.capacity
public abstract ByteBuf setBytes(int index, byte[] src, int srcIndex, int length)
index
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
,如果指定的
srcIndex
小于
0
,如果
index + length
大于
this.capacity
,或者
srcIndex + length
大于
src.length
public abstract ByteBuf setBytes(int index, java.nio.ByteBuffer src)
index
开始传送到此缓冲区,直到源缓冲区的位置达到其限制。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + src.remaining()
大于
this.capacity
public abstract int setBytes(int index, java.io.InputStream in, int length) throws java.io.IOException
index
开始传输到此缓冲区。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
length
- 要传输的字节数
-1
如果指定的频道已关闭。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的流在I / O期间抛出异常
public abstract int setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
index
开始传输到此缓冲区。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
length
- 要传输的最大字节数
-1
如果指定的频道关闭。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract int setBytes(int index, java.nio.channels.FileChannel in, long position, int length) throws java.io.IOException
index
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
此方法不会修改频道的位置。
position
- 传输开始的文件位置
length
- 要传输的最大字节数
-1
如果指定的频道已关闭。
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract ByteBuf setZero(int index, int length)
index
开始填充此缓冲区。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
length
- 写入缓冲区的数量为
NUL
java.lang.IndexOutOfBoundsException
- 如果指定的
index
小于
0
或者
index + length
大于
this.capacity
public abstract int setCharSequence(int index, java.lang.CharSequence sequence, java.nio.charset.Charset charset)
CharSequence
在当前
writerIndex
并增加了
writerIndex
由写入的字节。
index
- 应写入序列
sequence
- 写
charset
- 应该使用。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
不足以写入整个序列
public abstract boolean readBoolean()
readerIndex
的布尔值,并在此缓冲区
readerIndex
1
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
1
public abstract byte readByte()
readerIndex
处的一个字节,并在此缓冲区
readerIndex
1
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
1
public abstract short readUnsignedByte()
readerIndex
的无符号字节,并在此缓冲区
readerIndex
1
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
1
public abstract short readShort()
readerIndex
处获取一个16位短整数,并在此缓冲区
readerIndex
2
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
2
public abstract short readShortLE()
readerIndex
处获取一个16位短整数,并在此缓冲区
readerIndex
2
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
2
public abstract int readUnsignedShort()
readerIndex
处获取一个无符号的16位短整数,并在此缓冲区
readerIndex
2
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
2
public abstract int readUnsignedShortLE()
readerIndex
处获取一个无符号的16位短整数,并在此缓冲区
readerIndex
2
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
2
public abstract int readMedium()
readerIndex
处获取24位中等整数,并在此缓冲区
readerIndex
3
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
3
public abstract int readMediumLE()
readerIndex
处获取24位中等整数,并在此缓冲区
readerIndex
3
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
3
public abstract int readUnsignedMedium()
readerIndex
处获取无符号的24位中等整数,并在此缓冲区
readerIndex
3
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
3
public abstract int readUnsignedMediumLE()
readerIndex
处获取一个无符号的24位中等整数,并在此缓冲区
readerIndex
3
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
3
public abstract int readInt()
readerIndex
处获取32位整数,并在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public abstract int readIntLE()
readerIndex
的32位整数,并在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public abstract long readUnsignedInt()
readerIndex
处获取一个无符号的32位整数,并在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public abstract long readUnsignedIntLE()
readerIndex
的无符号32位整数,并在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public abstract long readLong()
readerIndex
处获取一个64位整数,并在此缓冲区
readerIndex
8
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
8
public abstract long readLongLE()
readerIndex
处获取64位整数,并在此缓冲区
readerIndex
8
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
8
public abstract char readChar()
readerIndex
处获取一个2字节的UTF-16字符,并在此缓冲区
readerIndex
2
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
2
public abstract float readFloat()
readerIndex
处获取一个32位浮点数,并在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public float readFloatLE()
readerIndex
的32位浮点数,
4
在此缓冲区
readerIndex
4
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
4
public abstract double readDouble()
readerIndex
处获取64位浮点数,并在此缓冲区
readerIndex
8
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
8
public double readDoubleLE()
readerIndex
以Little Endian字节顺序获取一个64位浮点数,
8
在此缓冲区
readerIndex
8
增加
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.readableBytes
小于
8
public abstract ByteBuf readBytes(int length)
readerIndex
并增加了readerIndex
由传输的字节(=数量length
)。
返回缓冲区的readerIndex
和writerIndex
是0
和length
分别。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract ByteBuf readSlice(int length)
readerIndex
开始返回此缓冲区的子区域的新片段,并将readerIndex
增加readerIndex
新片段的大小(= length
)。
另外请注意,此方法不会调用retain()
,因此引用计数不会增加。
length
- 新切片的大小
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract ByteBuf readRetainedSlice(int length)
readerIndex
开始返回此缓冲区的子区域的新保留切片,并将readerIndex
增加readerIndex
新切片的大小(= length
)。
请注意,与readSlice(int)
不同,此方法返回retained缓冲区。 此方法的行为与readSlice(...).retain()
类似, readSlice(...).retain()
在于此方法可能会返回生成较少垃圾的缓冲区实现。
length
- 新切片的大小
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract ByteBuf readBytes(ByteBuf dst)
readerIndex
开始,直到目标变为不可写入,并将传输字节数增加readerIndex
。
此方法与readBytes(ByteBuf, int, int)
基本相同,不同之writerIndex
于此方法通过传输字节数增加目标的writerIndex
,而readBytes(ByteBuf, int, int)
则不增加。
java.lang.IndexOutOfBoundsException
- 如果
dst.writableBytes
大于
this.readableBytes
public abstract ByteBuf readBytes(ByteBuf dst, int length)
readerIndex
并增加了readerIndex
由传输的字节(=数量length
)。
此方法与readBytes(ByteBuf, int, int)
基本相同,不同之writerIndex
于此方法通过传输的字节数(= length
)增加目标的writerIndex
,而readBytes(ByteBuf, int, int)
则不增加。
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
或者
length
大于
dst.writableBytes
public abstract ByteBuf readBytes(ByteBuf dst, int dstIndex, int length)
readerIndex
并增加了
readerIndex
由传输的字节(=数量
length
)。
dstIndex
- 目的地的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
dstIndex
小于
0
,如果
length
大于
this.readableBytes
,或者
dstIndex + length
大于
dst.capacity
public abstract ByteBuf readBytes(byte[] dst)
readerIndex
并增加了
readerIndex
由传输的字节(=数量
dst.length
)。
java.lang.IndexOutOfBoundsException
- 如果
dst.length
大于
this.readableBytes
public abstract ByteBuf readBytes(byte[] dst, int dstIndex, int length)
readerIndex
并增加了
readerIndex
由传输的字节(=数量
length
)。
dstIndex
- 目的地的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
dstIndex
小于
0
,如果
length
大于
this.readableBytes
,或者
dstIndex + length
大于
dst.length
public abstract ByteBuf readBytes(java.nio.ByteBuffer dst)
readerIndex
开始,直到目标的位置达到其限制,并将
readerIndex
增加
readerIndex
所传输的字节数。
java.lang.IndexOutOfBoundsException
- 如果
dst.remaining()
大于
this.readableBytes
public abstract ByteBuf readBytes(java.io.OutputStream out, int length) throws java.io.IOException
readerIndex
开始的指定流。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
java.io.IOException
- 如果指定的流在I / O期间抛出异常
public abstract int readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
readerIndex
开始的指定流。
length
- 要传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract java.lang.CharSequence readCharSequence(int length, java.nio.charset.Charset charset)
readerIndex
处获得给定长度的
CharSequence
,并将给定长度增加
readerIndex
。
length
- 要阅读的长度
charset
- 应该使用
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract int readBytes(java.nio.channels.FileChannel out, long position, int length) throws java.io.IOException
readerIndex
开始readerIndex
到指定通道,从给定的文件位置开始。
此方法不会修改频道的位置。
position
- 传输开始的文件位置
length
- 传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract ByteBuf skipBytes(int length)
length
增加当前
readerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract ByteBuf writeBoolean(boolean value)
writerIndex
处设置指定的布尔值,并在此缓冲区
writerIndex
1
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
1
public abstract ByteBuf writeByte(int value)
writerIndex
处设置指定的字节,并在此缓冲区writerIndex
1
增加writerIndex
。
指定值的24个高位被忽略。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
1
public abstract ByteBuf writeShort(int value)
writerIndex
处设置指定的16位短整数,并在此缓冲区writerIndex
2
增加writerIndex
。
指定值的16个高位被忽略。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
2
public abstract ByteBuf writeShortLE(int value)
writerIndex
处设置Little Endian Byte Order中指定的16位短整数,并在此缓冲区writerIndex
2
增加writerIndex
。
指定值的16个高位被忽略。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
2
public abstract ByteBuf writeMedium(int value)
writerIndex
中设置指定的24位中等整数,并在此缓冲区
writerIndex
3
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
3
public abstract ByteBuf writeMediumLE(int value)
writerIndex
中设置指定的24位中等整数,并在此缓冲区
writerIndex
3
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
3
public abstract ByteBuf writeInt(int value)
writerIndex
处设置指定的32位整数,并在此缓冲区
writerIndex
4
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
4
public abstract ByteBuf writeIntLE(int value)
writerIndex
处设置指定的32位整数,并在此缓冲区
writerIndex
4
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
4
public abstract ByteBuf writeLong(long value)
writerIndex
处设置指定的64位长整数,并在此缓冲区
writerIndex
8
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
8
public abstract ByteBuf writeLongLE(long value)
writerIndex
处设置指定的64位长整数,并在此缓冲区
writerIndex
8
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
8
public abstract ByteBuf writeChar(int value)
writerIndex
处设置指定的2字节UTF-16字符,并在此缓冲区writerIndex
2
增加writerIndex
。
指定值的16个高位被忽略。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
2
public abstract ByteBuf writeFloat(float value)
writerIndex
处设置指定的32位浮点数,并在此缓冲区
writerIndex
4
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
4
public ByteBuf writeFloatLE(float value)
writerIndex
处设置指定的32位浮点数,
4
在此缓冲区
writerIndex
4
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
4
public abstract ByteBuf writeDouble(double value)
writerIndex
处设置指定的64位浮点数,并在此缓冲区
writerIndex
8
增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
8
public ByteBuf writeDoubleLE(double value)
writerIndex
的指定64位浮点数,
8
在此缓冲区中增加
writerIndex
8
。
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
小于
8
public abstract ByteBuf writeBytes(ByteBuf src)
writerIndex
开始,直到源缓冲区变得不可读,并将传输字节数增加writerIndex
。
此方法与writeBytes(ByteBuf, int, int)
基本相同,不同之readerIndex
于此方法将源缓冲区的readerIndex
增加了传输字节数,而writeBytes(ByteBuf, int, int)
则不增加。
java.lang.IndexOutOfBoundsException
- 如果
src.readableBytes
大于
this.writableBytes
public abstract ByteBuf writeBytes(ByteBuf src, int length)
writerIndex
并增加了writerIndex
由传输的字节(=数量length
)。
此方法与writeBytes(ByteBuf, int, int)
基本相同,不同之readerIndex
于此方法将源缓冲区的readerIndex
增加了传输字节数(= length
),而writeBytes(ByteBuf, int, int)
不增加。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.writableBytes
或者
length
大于
src.readableBytes
public abstract ByteBuf writeBytes(ByteBuf src, int srcIndex, int length)
writerIndex
并增加了
writerIndex
由传输的字节(=数量
length
)。
srcIndex
- 来源的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
srcIndex
小于
0
,如果
srcIndex + length
大于
src.capacity
,或者
length
大于
this.writableBytes
public abstract ByteBuf writeBytes(byte[] src)
writerIndex
并增加了
writerIndex
由传输的字节(=数量
src.length
)。
java.lang.IndexOutOfBoundsException
- 如果
src.length
大于
this.writableBytes
public abstract ByteBuf writeBytes(byte[] src, int srcIndex, int length)
writerIndex
并增加了
writerIndex
由传输的字节(=数量
length
)。
srcIndex
- 来源的第一个索引
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果指定的
srcIndex
小于
0
,如果
srcIndex + length
大于
src.length
,或者
length
大于
this.writableBytes
public abstract ByteBuf writeBytes(java.nio.ByteBuffer src)
writerIndex
开始传送到此缓冲区,直到源缓冲区的位置达到其限制,并将传送的字节数增加
writerIndex
。
java.lang.IndexOutOfBoundsException
- 如果
src.remaining()
大于
this.writableBytes
public abstract int writeBytes(java.io.InputStream in, int length) throws java.io.IOException
writerIndex
开始传输到此缓冲区,并将传输字节数增加
writerIndex
。
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.writableBytes
java.io.IOException
- 如果指定的流在I / O期间抛出异常
public abstract int writeBytes(java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
writerIndex
开始传送到此缓冲区,并将传送的字节数增加
writerIndex
。
length
- 传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.writableBytes
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract int writeBytes(java.nio.channels.FileChannel in, long position, int length) throws java.io.IOException
writerIndex
开始,并将传输字节数增加writerIndex
。
此方法不会修改频道的位置。
position
- 传输开始的文件位置
length
- 传输的最大字节数
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.writableBytes
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public abstract ByteBuf writeZero(int length)
writerIndex
并增加了
writerIndex
由指定的
length
。
length
- 写入缓冲区的数量为
NUL
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.writableBytes
public abstract int writeCharSequence(java.lang.CharSequence sequence, java.nio.charset.Charset charset)
CharSequence
在当前writerIndex
并增加了writerIndex
由写入的字节。
在这个缓冲区中。
sequence
- 写
charset
- 应该使用
java.lang.IndexOutOfBoundsException
- 如果
this.writableBytes
不足以写入整个序列
public abstract int indexOf(int fromIndex, int toIndex, byte value)
value
。
搜索从指定的fromIndex
(含)到指定的toIndex
( toIndex
)。
如果fromIndex
大于toIndex
,则搜索按相反顺序执行。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
-1
。
public abstract int bytesBefore(byte value)
value
。
搜索从当前readerIndex
(含)到当前writerIndex
( writerIndex
)。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
readerIndex
与第一个匹配项之间的字节数(如果找到)。
否则为-1
。
public abstract int bytesBefore(int length, byte value)
value
的第一个匹配项。
搜索从当前readerIndex
(含)开始并持续指定的length
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
readerIndex
与第一个匹配项之间的字节数(如果找到)。
否则为-1
。
java.lang.IndexOutOfBoundsException
- 如果
length
大于
this.readableBytes
public abstract int bytesBefore(int index, int length, byte value)
value
。
搜索从指定的index
(含)开始并持续指定的length
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
index
与第一个匹配项之间的字节数(如果找到)。
否则为-1
。
java.lang.IndexOutOfBoundsException
- 如果
index + length
大于
this.capacity
public abstract int forEachByte(ByteProcessor processor)
processor
按升序对此缓冲区的可读字节进行迭代。
-1
如果处理器迭代到或超出可读字节的末尾。
最后访问的索引如果ByteProcessor.process(byte)
返回false
。
public abstract int forEachByte(int index, int length, ByteProcessor processor)
processor
按升序对此缓冲区的指定区域进行迭代。
(即index
, (index + 1)
,.. (index + length - 1)
)
-1
如果处理器迭代到或超出指定区域的末尾。
上次访问的索引如果ByteProcessor.process(byte)
返回false
。
public abstract int forEachByteDesc(ByteProcessor processor)
processor
按降序对此缓冲区的可读字节进行迭代。
-1
如果处理器迭代到或超出可读字节的开始位置。
最后访问的索引如果ByteProcessor.process(byte)
返回false
。
public abstract int forEachByteDesc(int index, int length, ByteProcessor processor)
processor
降序遍历此缓冲区的指定区域。
(即(index + length - 1)
, (index + length - 2)
,... index
)
-1
如果处理器迭代到或超出指定区域的开始位置。
上次访问的索引如果ByteProcessor.process(byte)
返回false
。
public abstract ByteBuf copy()
buf.copy(buf.readerIndex(), buf.readableBytes())
相同。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public abstract ByteBuf copy(int index, int length)
readerIndex
或writerIndex
。
public abstract ByteBuf slice()
buf.slice(buf.readerIndex(), buf.readableBytes())
相同。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
另外请注意,此方法不会调用retain()
,因此引用计数不会增加。
public abstract ByteBuf retainedSlice()
public abstract ByteBuf slice(int index, int length)
readerIndex
或writerIndex
。
另外请注意,此方法不会调用retain()
,因此引用计数不会增加。
public abstract ByteBuf retainedSlice(int index, int length)
readerIndex
或writerIndex
。
请注意,与slice(int, int)
不同,此方法返回retained缓冲区。 此方法的行为与slice(...).retain()
类似,只是此方法可能会返回一个生成较少垃圾的缓冲区实现。
public abstract ByteBuf duplicate()
readerIndex
或writerIndex
。
读者和作家的标记不会重复。 另外请注意,此方法不会调用retain()
,因此引用计数不会增加。
slice()
返回的缓冲区的缓冲区。
然而,这个缓冲区将共享底层缓冲区的容量,因此如果需要的话允许访问所有的底层内容。
public abstract ByteBuf retainedDuplicate()
buf.slice(0, buf.capacity())
完全相同。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,与slice(int, int)
不同,此方法返回retained缓冲区。 此方法的行为与duplicate().retain()
类似, duplicate().retain()
在于此方法可能会返回一个生成较少垃圾的缓冲区实现。
public abstract int nioBufferCount()
ByteBuffer
的最大数量。
请注意, nioBuffers()
或nioBuffers(int, int)
可能会返回更少数量的ByteBuffer
。
-1
如果此缓冲区没有基础ByteBuffer
。
如果此缓冲区至少有一个基础ByteBuffer
,则基础ByteBuffer
的ByteBuffer
。
请注意,此方法不返回0
以避免混淆。
nioBuffer()
,
nioBuffer(int, int)
,
nioBuffers()
,
nioBuffers(int, int)
public abstract java.nio.ByteBuffer nioBuffer()
ByteBuffer
公开此缓冲区的可读字节。
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此缓冲区的索引和标记。
该方法与buf.nioBuffer(buf.readerIndex(), buf.readableBytes())
相同。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
java.lang.UnsupportedOperationException
- 如果此缓冲区无法创建与自身共享内容的
ByteBuffer
nioBufferCount()
,
nioBuffers()
,
nioBuffers(int, int)
public abstract java.nio.ByteBuffer nioBuffer(int index, int length)
ByteBuffer
。
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此缓冲区的索引和标记。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
java.lang.UnsupportedOperationException
- 如果此缓冲区无法创建与自己共享内容的
ByteBuffer
nioBufferCount()
,
nioBuffers()
,
nioBuffers(int, int)
public abstract java.nio.ByteBuffer internalNioBuffer(int index, int length)
public abstract java.nio.ByteBuffer[] nioBuffers()
ByteBuffer
的形式公开此缓冲区的可读字节。
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此缓冲区的索引和标记。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
java.lang.UnsupportedOperationException
- 如果此缓冲区无法创建与自己共享内容的
ByteBuffer
nioBufferCount()
,
nioBuffer()
,
nioBuffer(int, int)
public abstract java.nio.ByteBuffer[] nioBuffers(int index, int length)
ByteBuffer
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此索引和标记缓冲。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
java.lang.UnsupportedOperationException
- 如果此缓冲区无法创建与自身共享内容的
ByteBuffer
nioBufferCount()
,
nioBuffer()
,
nioBuffer(int, int)
public abstract boolean hasArray()
true
。
如果此方法返回true,则可以放心地呼叫array()
和arrayOffset()
。
public abstract byte[] array()
java.lang.UnsupportedOperationException
- 如果没有可访问的备份字节数组
public abstract int arrayOffset()
java.lang.UnsupportedOperationException
- 如果没有可访问的备份字节数组
public abstract boolean hasMemoryAddress()
true
。
public abstract long memoryAddress()
java.lang.UnsupportedOperationException
- 如果此缓冲区不支持访问低级内存地址
public abstract java.lang.String toString(java.nio.charset.Charset charset)
buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)
相同。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
java.nio.charset.UnsupportedCharsetException
- 如果指定的字符集名称不被当前VM支持
public abstract java.lang.String toString(int index, int length, java.nio.charset.Charset charset)
readerIndex
或writerIndex
。
public abstract int hashCode()
hashCode
在类
java.lang.Object
public abstract boolean equals(java.lang.Object obj)
readerIndex()
和writerIndex()
。
此方法还会为null
返回false
,并返回一个不是ByteBuf
类型实例的对象 。
equals
在类
java.lang.Object
public abstract int compareTo(ByteBuf buffer)
strcmp
, memcmp
和String.compareTo(String)
。
compareTo
接口
java.lang.Comparable<ByteBuf>
public abstract java.lang.String toString()
readerIndex()
, writerIndex()
和capacity()
。
toString
在类
java.lang.Object
public abstract ByteBuf retain(int increment)
ReferenceCounted
复制的描述
increment
。
retain
接口
ReferenceCounted
public abstract ByteBuf retain()
ReferenceCounted
复制的描述
1
。
retain
在界面
ReferenceCounted
public abstract ByteBuf touch()
ReferenceCounted
复制的描述
touch
在界面
ReferenceCounted
public abstract ByteBuf touch(java.lang.Object hint)
ReferenceCounted
复制的描述
ResourceLeakDetector
提供给您。
touch
接口
ReferenceCounted
Copyright © 2008–2018 The Netty Project. All rights reserved.