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, waitrefCnt, release, releasepublic 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.