|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface ChannelBuffer
随机和顺序访问序列零个或多个字节. 这个接口为一个或多个原始字节数组和NIO 缓冲提供抽象视图.
ChannelBuffers
帮助类创建一个新的缓冲区.
ChannelBuffer
使用 从0开始的索引. 这意味着第一个字节的索引始终是0和字节的最后索引总是capacity - 1
.例如,要遍历缓冲区里的所有字节,你可以如下操作,不管它内部的实现:
ChannelBuffer
buffer = ...;
for (int i = 0; i < buffer.capacity(); i ++) {
byte b = array.getByte(i);
System.out.println((char) b);
}
ChannelBuffer
提供两个指针变量以支持顺序读写操作 - readerIndex
读操作和writerIndex
写操作. 下图显示了使用两个指针把一个缓冲区分割成两三个区域:
+-------------------+------------------+------------------+ | discardable bytes | readable bytes | writable bytes | | | (CONTENT) | | +-------------------+------------------+------------------+ | | | | 0 <= readerIndex <= writerIndex <= capacity
read
或skip
开头的操作都会获得或跳过当前的
readerIndex
, 并增加可读数量. 如果读操作的参数也是一个
ChannelBuffer
并没有指定目的索引, 这个指定的缓冲区的readerIndex
也会跟着增加.
如果没有足够的可读字节, 会抛出IndexOutOfBoundsException
. 新分配、封装或复制缓冲区的
readerIndex
的默认值是0
.
// Iterates the readable bytes of a buffer.
ChannelBuffer
buffer = ...;
while (buffer.readable()) {
System.out.println(buffer.readByte());
}
write
开头的操作都在当前writerIndex
处写数据,并增加可写数量. 如果读操作的参数也是一个 ChannelBuffer
并没有指定目的索引,
这个指定的缓冲区的readerIndex
也会跟着增加.
如果没有足够的可写字节, 会抛出IndexOutOfBoundsException
. 新分配的缓冲区
writerIndex
的默认值为0
. 封装缓冲或拷贝缓冲的
writerIndex
的默认值是这个缓冲的 capacity
.
// Fills the writable bytes of a buffer with random integers.
ChannelBuffer
buffer = ...;
while (buffer.writableBytes() >= 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()
设置 readerIndex
和
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)
方法帮助你查找符合标准的一个值的索引. 复杂的动态顺序查找可以用
ChannelBufferIndexFinder
以及简单的静态单字节查找.
如果你是解码可变长度数据如以NUL结尾的字符串,你会发现使用bytesBefore(byte)
更加有用.
readerIndex
, 另一个是保存
writerIndex
. 你可以调用reset方法复位任何一个标记. 它的工作原理和
InputStream
的mark和reset方法非常相似,除了没有 readlimit
.
duplicate()
, slice()
或者 slice(int, int)
为一个存在的缓冲区创建一个视图. 一个独立的衍生缓冲区拥有独立的 readerIndex
,
writerIndex
和 标记索引, 而共享其他的内部数据表现,就像NIO缓冲一样.
有些时候对现有的缓冲区使用完全拷贝是必须的,请使用方法copy()
.
ChannelBuffer
是由一个字节数组而来 (如 byte[]
), 你可以通过
array()
方法直接访问它 . 要检测一个缓冲区是否由一个字节数据而来可以使用hasArray()
方法
toByteBuffer()
方法和 toByteBuffers()
方法可以把一个
ChannelBuffer
转化成一个或多个NIO缓冲. 只要有可能这些方法会避免缓冲分配和内存复制,但并不保证内存复制不会被调用.
toString(String)
方法可以把ChannelBuffer
转化成一个String
.
请注意 toString()
并不是一个转化方法.
ChannelBufferInputStream
和 ChannelBufferOutputStream
.
方法摘要 | |
---|---|
byte[] |
array()
返回该缓冲支持的字节数组. |
int |
arrayOffset()
返回该缓冲内部的字节数组的第一个字节的偏移量 |
int |
bytesBefore(byte value)
在该缓冲区当前的 readerIndex (包含)到writerIndex (不包含)区间查找第一个发现的
value . |
int |
bytesBefore(ChannelBufferIndexFinder indexFinder)
在该缓冲区当前的 readerIndex (包含)到writerIndex
(不包含)区间查找indexFinder返回true的第一个地方. |
int |
bytesBefore(int length,
byte value)
在该缓冲区当前的 readerIndex (包含)到readerIndex + length
(不包含)区间查找第一个发现value的地方 . |
int |
bytesBefore(int length,
ChannelBufferIndexFinder indexFinder)
在该缓冲区当前的 readerIndex (包含)到readerIndex + length
(不包含)区间查找indexFinder首次发现的地方. |
int |
bytesBefore(int index,
int length,
byte value)
在该缓冲区指定的index(包含)到 index + length (不包含)区间查找第一个发现value的地方. |
int |
bytesBefore(int index,
int length,
ChannelBufferIndexFinder indexFinder)
在该缓冲区指定的index(包含)到 index + length (不包含)区间查找indexFinder首次发现的地方. |
int |
capacity()
返回缓冲区包含字节数量. |
void |
clear()
同时设置缓冲区的 readerIndex 和writerIndex 为0 . |
int |
compareTo(ChannelBuffer buffer)
和指定的缓冲进行内容比较 . |
ChannelBuffer |
copy()
返回该缓冲可读字节的拷贝.修改其中任何一个缓冲对另一个都不会有影响. |
ChannelBuffer |
copy(int index,
int length)
返回该缓冲的子部分,修改其中任何一个缓冲对另一个都不会有影响.且并不修改该缓冲区的 readerIndex 和
writerIndex . |
void |
discardReadBytes()
丢弃索引介于0和 readerIndex 之间的字节. |
ChannelBuffer |
duplicate()
返回该缓冲全部分.修改其中任何一个缓冲对另一个都会有影响,不过它们维护着各自的索引和标记,该方法等同于 buf.slice(0, buf.capacity()) . |
void |
ensureWritableBytes(int writableBytes)
保证可写字节数量大于等于指定的值. |
boolean |
equals(java.lang.Object obj)
检测指定的缓冲内容是否和该缓冲内容一样,这里'一样'意味着: 两个缓冲的内容大小一样 两个缓冲的每个单一字节一样. |
ChannelBufferFactory |
factory()
返回一个用于创建与这个缓冲相同类型和默认 ByteOrder 的ChannelBuffer 的工厂. |
byte |
getByte(int index)
在指定绝对值 index 处获取一个字节.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
void |
getBytes(int index,
byte[] dst)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标. |
void |
getBytes(int index,
byte[] dst,
int dstIndex,
int length)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标. |
void |
getBytes(int index,
java.nio.ByteBuffer dst)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标,直到目标的position到达限制为止. |
void |
getBytes(int index,
ChannelBuffer dst)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标,直到目标不可写为止. |
void |
getBytes(int index,
ChannelBuffer dst,
int length)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标. |
void |
getBytes(int index,
ChannelBuffer dst,
int dstIndex,
int length)
在该缓冲区指定绝对值 index 开始处传输数据到指定的目标. |
int |
getBytes(int index,
java.nio.channels.GatheringByteChannel out,
int length)
在该缓冲区指定绝对值 index 开始处传输数据到指定的通道.该方法并不修改该缓冲区的 readerIndex 和
writerIndex . |
void |
getBytes(int index,
java.io.OutputStream out,
int length)
在该缓冲区指定绝对值 index 开始处传输数据到指定的数据流.该方法并不修改该缓冲区的 readerIndex 和
writerIndex . |
char |
getChar(int index)
在指定绝对值 index 处获取一个2字节的UTF16字符.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
double |
getDouble(int index)
在指定绝对值 index 处获取一个64位浮点数.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
float |
getFloat(int index)
在指定绝对值 index 处获取一个32位浮点数.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
int |
getInt(int index)
在指定绝对值 index 处获取一个32位符号整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
long |
getLong(int index)
在指定绝对值 index 处获取一个64位整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
int |
getMedium(int index)
在指定绝对值 index 处获取一个24位整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
short |
getShort(int index)
在指定绝对值 index 处获取一个16位整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
short |
getUnsignedByte(int index)
在指定绝对值 index 处获取一个无符号字节.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
long |
getUnsignedInt(int index)
在指定绝对值 index 处获取一个32位无符号整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
int |
getUnsignedMedium(int index)
在指定绝对值 index 处获取一个24位无符号整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
int |
getUnsignedShort(int index)
在指定绝对值 index 处获取一个16位无符号整型.该方法并不修改缓冲的 readerIndex 和
writerIndex . |
boolean |
hasArray()
只有当该缓冲有一个支持的字节数组才返回true,如果该方法返回true,你可以安全的调用 array() 和
arrayOffset() . |
int |
hashCode()
返回该缓冲区内容的哈希值.如果有一个字节数据与该缓冲一样,那么两数组返回的值都相同. |
int |
indexOf(int fromIndex,
int toIndex,
byte value)
在该缓冲区指定的 fromIndex (包含)到toIndex (不包含)区间查找第一个发现的value
. |
int |
indexOf(int fromIndex,
int toIndex,
ChannelBufferIndexFinder indexFinder)
在该缓冲区指定的 fromIndex (包含)到toIndex
(不包含)区间查找indexFinder返回true的第一个发现的地方. |
boolean |
isDirect()
判断该缓冲区是否是由NIO direct缓冲支持. |
void |
markReaderIndex()
标记缓冲区当前的 readerIndex .你可以通过调用 resetReaderIndex() 把当前的
readerIndex 复位到标记的readerIndex . |
void |
markWriterIndex()
标记缓冲区当前的 writerIndex .你可以通过调用 resetWriterIndex() 把当前的
writerIndex 复位到标记的writerIndex . |
java.nio.ByteOrder |
order()
返回缓冲区的 字节序. |
boolean |
readable()
只有当 (this.writerIndex - this.readerIndex) 大于0 才返回true
. |
int |
readableBytes()
返回可读字节的数量,等同于 (this.writerIndex - this.readerIndex) . |
byte |
readByte()
在当前 readerIndex 位置获取一个字节,并为 readerIndex 加1. |
void |
readBytes(byte[] dst)
从该缓冲当前的readerIndex处传输数据到指定的目标, 并使用传输的字节数量( = dst.length
)增加readerIndex. |
void |
readBytes(byte[] dst,
int dstIndex,
int length)
从该缓冲当前的readerIndex处传输数据到指定的目标, 并使用传输的字节数量( = length
)增加readerIndex. |
void |
readBytes(java.nio.ByteBuffer dst)
从该缓冲当前的readerIndex处传输数据到指定的目标,直到目标的position到达限制为止, 并使用传输的字节数量 增加readerIndex. |
void |
readBytes(ChannelBuffer dst)
从该缓冲当前的readerIndex处传输数据到指定的目标,直到目标不可写为止, 并使用传输的字节数量增加readerIndex. |
ChannelBuffer |
readBytes(ChannelBufferIndexFinder indexFinder)
已过时。 以被 bytesBefore(ChannelBufferIndexFinder) 和
readBytes(int) 代替. |
void |
readBytes(ChannelBuffer dst,
int length)
从该缓冲当前的readerIndex处传输数据到指定的目标,直到目标不可写为止, 并使用传输的字节数量( = length
)增加readerIndex. |
void |
readBytes(ChannelBuffer dst,
int dstIndex,
int length)
从该缓冲当前的readerIndex处传输数据到指定的目标, 并使用传输的字节数量( = length
)增加readerIndex. |
int |
readBytes(java.nio.channels.GatheringByteChannel out,
int length)
从该缓冲当前的readerIndex处传输数据到指定的通道. |
ChannelBuffer |
readBytes(int length)
在当前的 readerIndex 处传输该缓冲区数据到一个新创建的缓冲区中,并使用传输的字节数(= length )增加
readerIndex . |
void |
readBytes(java.io.OutputStream out,
int length)
从该缓冲当前的readerIndex处传输数据到指定的输出流. |
char |
readChar()
在当前 readerIndex 位置获取一个2字节UTF-16字符,并为 readerIndex 加2. |
double |
readDouble()
在当前 readerIndex 位置获取一个64位浮点数,并为 readerIndex 加8. |
int |
readerIndex()
返回该缓冲的 readerIndex 值 |
void |
readerIndex(int readerIndex)
设置 readerIndex 值. |
float |
readFloat()
在当前 readerIndex 位置获取一个32位浮点数,并为 readerIndex 加4. |
int |
readInt()
在当前 readerIndex 位置获取一个32位整型,并为 readerIndex 加4. |
long |
readLong()
在当前 readerIndex 位置获取一个64位整型,并为 readerIndex 加8. |
int |
readMedium()
在当前 readerIndex 位置获取一个24位整型,并为 readerIndex 加3. |
short |
readShort()
在当前 readerIndex 位置获取一个16位短整型,并为 readerIndex 加2. |
ChannelBuffer |
readSlice(ChannelBufferIndexFinder indexFinder)
已过时。 使用 bytesBefore(ChannelBufferIndexFinder) 和
readSlice(int) 代替. |
ChannelBuffer |
readSlice(int length)
在当前的 readerIndex 开始处切割该缓冲区的子范围作为新的缓冲区,并使用新切割的大小增加readerIndex
(= length ). |
short |
readUnsignedByte()
在当前 readerIndex 位置获取一个无符号字节,并为 readerIndex 加1. |
long |
readUnsignedInt()
在当前 readerIndex 位置获取一个32位 无符号整型,并为 readerIndex 加4. |
int |
readUnsignedMedium()
在当前 readerIndex 位置获取一个24位无符号整型,并为 readerIndex 加3. |
int |
readUnsignedShort()
在当前 readerIndex 位置获取一个 16位无符号短整型,并为 readerIndex 加2. |
void |
resetReaderIndex()
复位当前 readerIndex 到标记的readerIndex . |
void |
resetWriterIndex()
复位当前 writerIndex 到标记的writerIndex . |
void |
setByte(int index,
int value)
在指定绝对值 index 处设置指定的字节. 24高序位会被忽略. |
void |
setBytes(int index,
byte[] src)
把指定的源数组的数据传输到该缓冲区指定绝对值 index 的位置 . |
void |
setBytes(int index,
byte[] src,
int srcIndex,
int length)
把指定的源数组的数据传输到该缓冲区指定绝对值 index 的位置 . |
void |
setBytes(int index,
java.nio.ByteBuffer src)
把指定的源缓冲的数据传输到该缓冲区指定绝对值 index 的位置 ,直到源缓冲的position到达限制为止. |
void |
setBytes(int index,
ChannelBuffer src)
把指定的源缓冲区的数据传输到该缓冲区指定绝对值 index 的位置 ,直到源缓冲区没有可读数据为止. |
void |
setBytes(int index,
ChannelBuffer src,
int length)
把指定的源缓冲区的数据传输到该缓冲区指定绝对值 index 的位置. |
void |
setBytes(int index,
ChannelBuffer src,
int srcIndex,
int length)
把指定的源缓冲区的数据传输到该缓冲区指定绝对值 index 的位置 . |
int |
setBytes(int index,
java.io.InputStream in,
int length)
把指定的源输入流的数据传输到该缓冲区指定绝对值 index 的位置 . |
int |
setBytes(int index,
java.nio.channels.ScatteringByteChannel in,
int length)
把指定的源通道的数据传输到该缓冲区指定绝对值 index 的位置 . |
void |
setChar(int index,
int value)
在指定绝对值 index 处设置指定的2字节的UTF16字符 . 16高序位的值会被忽略.该方法并不修改该缓冲区的
readerIndex 和 writerIndex . |
void |
setDouble(int index,
double value)
在指定绝对值 index 处设置指定的64位浮点数 . |
void |
setFloat(int index,
float value)
在指定绝对值 index 处设置指定的32位浮点数 . |
void |
setIndex(int readerIndex,
int writerIndex)
一次性设置 readerIndex 和writerIndex . |
void |
setInt(int index,
int value)
在指定绝对值 index 处设置指定的32位整型. |
void |
setLong(int index,
long value)
在指定绝对值 index 处设置指定的64位长整型. |
void |
setMedium(int index,
int value)
在指定绝对值 index 处设置指定的24位整型. |
void |
setShort(int index,
int value)
在指定绝对值 index 处设置指定的16位短整型. 16高序位会被忽略. |
void |
setZero(int index,
int length)
在指定绝对值 index 的位置填充NUL(0x00).该方法并不修改该缓冲区和源缓冲区的
readerIndex 和 writerIndex . |
int |
skipBytes(ChannelBufferIndexFinder indexFinder)
已过时。 使用 bytesBefore(ChannelBufferIndexFinder) 和
skipBytes(int) 代替. |
void |
skipBytes(int length)
使用指定的 length 增加该缓冲区的readerIndex . |
ChannelBuffer |
slice()
返回该缓冲可读字节的切片.修改其中任何一个缓冲对另一个都会有影响,不过它们维护着各自的索引和标记,该方法等同于 buf.slice(buf.readerIndex(), buf.readableBytes()) . |
ChannelBuffer |
slice(int index,
int length)
返回该缓冲子部分的切片.修改其中任何一个缓冲对另一个都会有影响,不过它们维护着各自的索引和标记,且并不修改该缓冲区的 readerIndex 和writerIndex . |
java.nio.ByteBuffer |
toByteBuffer()
转化该缓冲区的可读字节到一个NIO缓冲区.返回的缓冲区可能有或没有和该缓冲共享内容,但是它们有各自的索引和标记.该方法等同于 buf.toByteBuffer(buf.readerIndex(), buf.readableBytes()) . |
java.nio.ByteBuffer |
toByteBuffer(int index,
int length)
转化该缓冲区的子部分到一个NIO缓冲区.返回的缓冲区可能有或没有和该缓冲共享内容,但是它们有各自的索引和标记. |
java.nio.ByteBuffer[] |
toByteBuffers()
转化该缓冲区的可读字节到一个NIO缓冲数组,返回的缓冲数组可能有或没有和该缓冲共享内容,但是它们有各自的索引和标记 ,该方法等同于 buf.toByteBuffers(buf.readerIndex(), buf.readableBytes()) . |
java.nio.ByteBuffer[] |
toByteBuffers(int index,
int length)
转化该缓冲区的子部分到一个NIO缓冲数组,返回的缓冲数组可能有或没有和该缓冲共享内容,但是它们有各自的索引和标记 , 且并不修改该缓冲区的 readerIndex 和 writerIndex . |
java.lang.String |
toString()
返回该缓冲的字符串表示形式. |
java.lang.String |
toString(java.nio.charset.Charset charset)
使用一个指定的字符集解码该缓冲子部分为一个字符串.该方法等同于 buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)
. |
java.lang.String |
toString(int index,
int length,
java.nio.charset.Charset charset)
使用一个指定的字符集解码该缓冲子部分为一个字符串,该方法并不修改 readerIndex 和 writerIndex . |
java.lang.String |
toString(int index,
int length,
java.lang.String charsetName)
已过时。 使用 bytesBefore(int, int, ChannelBufferIndexFinder) 和
toString(int, int, Charset) 代替. |
java.lang.String |
toString(int index,
int length,
java.lang.String charsetName,
ChannelBufferIndexFinder terminatorFinder)
已过时。 使用 bytesBefore(int, int, ChannelBufferIndexFinder) 和
toString(int, int, Charset) 代替. |
java.lang.String |
toString(java.lang.String charsetName)
已过时。 使用 toString(Charset) 代替. |
java.lang.String |
toString(java.lang.String charsetName,
ChannelBufferIndexFinder terminatorFinder)
已过时。 使用 bytesBefore(ChannelBufferIndexFinder) 和
toString(int, int, Charset) 代替. |
boolean |
writable()
只有当 (this.capacity - this.writerIndex) 大于0 才返回true . |
int |
writableBytes()
返回可写字节的数量,等同于 (this.capacity - this.writerIndex) . |
void |
writeByte(int value)
在当前的 writerIndex 设置指定的字节,并为writerIndex 加1. 24高序位会被忽略. |
void |
writeBytes(byte[] src)
从指定的源数组中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数( = src.length
)增加 wirterIndex . |
void |
writeBytes(byte[] src,
int srcIndex,
int length)
从指定的源数组中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数( = length )增加
wirterIndex . |
void |
writeBytes(java.nio.ByteBuffer src)
从指定的源缓冲中传输数据到该缓冲区的当前 writerIndex 处,直到源缓冲的position达到限制为止,并使用传输的字节数增加
wirterIndex . |
void |
writeBytes(ChannelBuffer src)
从指定的源缓冲区中传输数据到该缓冲区的当前 writerIndex 处,直到源缓冲不可读为止,并使用传输的字节数增加
wirterIndex .除了该方法会使用传输的字节数增加源缓冲区的readerIndex 外,基本
writeBytes(ChannelBuffer, int, int) 和方法一样 . |
void |
writeBytes(ChannelBuffer src,
int length)
从指定的源缓冲区中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数( = length )增加
wirterIndex .除了该方法会使用传输的字节数( =length )增加源缓冲区的
readerIndex 外,基本 writeBytes(ChannelBuffer, int, int)
和方法一样 .. |
void |
writeBytes(ChannelBuffer src,
int srcIndex,
int length)
从指定的源缓冲区中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数( = length )增加
wirterIndex |
int |
writeBytes(java.io.InputStream in,
int length)
从指定的源输入流中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数( = length )增加
wirterIndex . |
int |
writeBytes(java.nio.channels.ScatteringByteChannel in,
int length)
从指定的源通道中传输数据到该缓冲区的当前 writerIndex 处,并使用传输的字节数增加 wirterIndex . |
void |
writeChar(int value)
在当前的 writerIndex 设置指定的2字节UTF-16字符,并为writerIndex 加2.
16位高序位会被忽略. |
void |
writeDouble(double value)
在当前的 writerIndex 设置指定的64位浮点数,并为writerIndex 加8. |
void |
writeFloat(float value)
在当前的 writerIndex 设置指定的32位浮点数,并为writerIndex 加4. |
void |
writeInt(int value)
在当前的 writerIndex 设置指定的32位整型,并为writerIndex 加4. |
void |
writeLong(long value)
在当前的 writerIndex 设置指定的64位长整型,并为writerIndex 加8. |
void |
writeMedium(int value)
在当前的 writerIndex 设置指定的24位整型,并为writerIndex 加3. |
int |
writerIndex()
返回该缓冲的 writerIndex 值. |
void |
writerIndex(int writerIndex)
设置 writerIndex 值. |
void |
writeShort(int value)
在当前的 writerIndex 设置指定的16位短整型,并为writerIndex 加2. 16高序位会被忽略. |
void |
writeZero(int length)
在当前的writerIndex处填充NUL (0x00),并使用指定的length增加 writerIndex . |
方法详细信息 |
---|
ChannelBufferFactory factory()
ByteOrder
的ChannelBuffer
的工厂.
int capacity()
java.nio.ByteOrder order()
boolean isDirect()
int readerIndex()
readerIndex
值
void readerIndex(int readerIndex)
readerIndex
值.
java.lang.IndexOutOfBoundsException
- 如果指定的 readerIndex
小于0
或大于
this.writerIndex
,则抛出异常int writerIndex()
writerIndex
值.
void writerIndex(int writerIndex)
writerIndex
值.
java.lang.IndexOutOfBoundsException
- 如果指定的writerIndex
小于this.readerIndex
或大于
this.capacity
void setIndex(int readerIndex, int writerIndex)
readerIndex
和writerIndex
. 如果对调用
readerIndex(int)
和writerIndex(int)
方法有顺序要求时这个方法很有用.
比如,下面代码会失败:
// 创建一个readerIndex,writerIndex和capacity分别为0,0,8的缓冲.下面代码也会失败:ChannelBuffer
buf =ChannelBuffers
.buffer(8); // 因为readerIndex(2)大于当前的writerIndex(0),所以IndexOutOfBoundsException会被抛出. buf.readerIndex(2); buf.writerIndex(4);
// 创建一个readerIndex,writerIndex和capacity分别为0,8,8的缓冲.相比之下,只要符合基本限制,不管当前缓冲的索引值是什么,ChannelBuffer
buf =ChannelBuffers
.wrappedBuffer(new byte[8]); // readerIndex为8. buf.readLong(); // 因为writerIndex(4)小于当前的readerIndex(8),所以IndexOutOfBoundsException会被抛出. buf.writerIndex(4); buf.readerIndex(2);
setIndex(int, int)
保证不会抛出
IndexOutOfBoundsException
:
// 不管当前缓冲的状态是什么,只要缓冲区的 容量capacity不小于4,下面的调用总是成功的. buf.setIndex(2, 4);
java.lang.IndexOutOfBoundsException
- 如果readerIndex
小于0、writerIndex
小于
readerIndex
或者writerIndex
大于
this.capacity
都会抛出异常int readableBytes()
(this.writerIndex - this.readerIndex)
.
int writableBytes()
(this.capacity - this.writerIndex)
.
boolean readable()
(this.writerIndex - this.readerIndex)
大于0
才返回true
.
boolean writable()
(this.capacity - this.writerIndex)
大于0
才返回true
.
void clear()
readerIndex
和writerIndex
为0
. 这个方法等同于
setIndex(0, 0)
.
请注意这个方法的行为不同于NIO缓冲,NIO会设置 limit
为缓冲的capacity
.
void markReaderIndex()
readerIndex
.你可以通过调用 resetReaderIndex()
把当前的
readerIndex
复位到标记的readerIndex
. 标记的readerIndex
初始值为
0
.
void resetReaderIndex()
readerIndex
到标记的readerIndex
.
java.lang.IndexOutOfBoundsException
- 如果当前的writerIndex
小于标记的 readerIndex
,抛出异常void markWriterIndex()
writerIndex
.你可以通过调用 resetWriterIndex()
把当前的
writerIndex
复位到标记的writerIndex
. 标记的writerIndex
初始值为
0
.
void resetWriterIndex()
writerIndex
到标记的writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果当前的readerIndex
大于标记的 writerIndex
,抛出异常void discardReadBytes()
readerIndex
之间的字节. 移动字节直到readerIndex
和
writerIndex
之间的的索引为0,并分别设置readerIndex
和 writerIndex
为0和oldWriterIndex - oldReaderIndex
.
请参阅类文档了解更多的解释.
void ensureWritableBytes(int writableBytes)
IndexOutOfBoundsException
.writable bytes
的数量大于等于指定的值.
该扩展包含内部缓冲重新分配及内存复制.
writableBytes
- 最小期望的可写字节
java.lang.IndexOutOfBoundsException
- 如果该缓冲不是动态缓冲,并且可写字节小于指定的值,则抛出异常byte getByte(int index)
index
处获取一个字节.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 1
大于
this.capacity
,则抛出异常short getUnsignedByte(int index)
index
处获取一个无符号字节.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 1
大于
this.capacity
,则抛出异常short getShort(int index)
index
处获取一个16位整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 2
大于
this.capacity
,则抛出异常int getUnsignedShort(int index)
index
处获取一个16位无符号整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 2
大于
this.capacity
,则抛出异常int getMedium(int index)
index
处获取一个24位整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 3
大于
this.capacity
,则抛出异常int getUnsignedMedium(int index)
index
处获取一个24位无符号整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 3
大于
this.capacity
,则抛出异常int getInt(int index)
index
处获取一个32位符号整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 4
大于
this.capacity
,则抛出异常long getUnsignedInt(int index)
index
处获取一个32位无符号整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 4
大于
this.capacity
,则抛出异常long getLong(int index)
index
处获取一个64位整型.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 8
大于
this.capacity
,则抛出异常char getChar(int index)
index
处获取一个2字节的UTF16字符.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 2
大于
this.capacity
,则抛出异常float getFloat(int index)
index
处获取一个32位浮点数.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 4
大于
this.capacity
,则抛出异常double getDouble(int index)
index
处获取一个64位浮点数.该方法并不修改缓冲的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果指定的index
小于0
或 index + 8
大于void getBytes(int index, ChannelBuffer dst)
index
开始处传输数据到指定的目标,直到目标不可写为止. 该方法除了会使用传输的字节数量增加目标缓冲区的
writerIndex
外,基本与getBytes(int, ChannelBuffer, int, int)
一样. 该方法并不修改源缓冲区的 readerIndex
和 writerIndex
. (如:本缓冲区).
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或者
index + dst.writableBytes
大于 this.capacity
时抛出异常void getBytes(int index, ChannelBuffer dst, int length)
index
开始处传输数据到指定的目标. 该方法除了会使用传输的字节数量增加目标缓冲区的
writerIndex
外,基本与getBytes(int, ChannelBuffer, int, int)
一样. 该方法并不修改源缓冲区的 readerIndex
和 writerIndex
. (如:本缓冲区).
length
- 传输字节数量
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
、 index + length
大于
this.capacity
或者 length
大于
dst.writableBytes
时抛出异常void getBytes(int index, ChannelBuffer dst, int dstIndex, int length)
index
开始处传输数据到指定的目标. 该方法并不修改源缓冲区和目标缓冲区的
readerIndex
和 writerIndex
dstIndex
- 目标缓冲区的开始索引length
- 传输字节数量
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
、 指定的dstIndex
小于0
、
index + length
大于this.capacity
, 或者
dstIndex + length
大于 dst.capacity
时抛出异常void getBytes(int index, byte[] dst)
index
开始处传输数据到指定的目标. 该方法并不修改该缓冲区的 readerIndex
和
writerIndex
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或者 index + dst.length
大于
this.capacity
时抛出异常void 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
时抛出异常void getBytes(int index, java.nio.ByteBuffer dst)
index
开始处传输数据到指定的目标,直到目标的position到达限制为止. 该方法并不修改该缓冲区的
readerIndex
和 writerIndex
,但会增加目标的 position
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或者
index + dst.remaining()
大于 this.capacity
时抛出异常void 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期间抛出的异常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期间抛出的异常void setByte(int index, int value)
index
处设置指定的字节. 24高序位会被忽略. 该方法并不修改该缓冲区的 readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 1
大于
this.capacity
是抛出异常void setShort(int index, int value)
index
处设置指定的16位短整型. 16高序位会被忽略. 该方法并不修改该缓冲区的
readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + 2
大于
this.capacity
时抛出异常void setMedium(int index, int value)
index
处设置指定的24位整型. 请注意大多数有意义的字节会被忽略. 该方法并不修改该缓冲区的
readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + 3
大于
this.capacity
时抛出异常void setInt(int index, int value)
index
处设置指定的32位整型. 该方法并不修改该缓冲区的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 4
大于
this.capacity
void setLong(int index, long value)
index
处设置指定的64位长整型. 该方法并不修改该缓冲区的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 8
大于
this.capacity
时抛出异常void setChar(int index, int value)
index
处设置指定的2字节的UTF16字符 . 16高序位的值会被忽略.该方法并不修改该缓冲区的
readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 2
大于
this.capacity
时抛出异常void setFloat(int index, float value)
index
处设置指定的32位浮点数 . 该方法并不修改该缓冲区的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 4
大于
this.capacity
时抛出异常void setDouble(int index, double value)
index
处设置指定的64位浮点数 . 该方法并不修改该缓冲区的 readerIndex
和
writerIndex
.
java.lang.IndexOutOfBoundsException
- 当指定的index
小于0
或 index + 8
大于
this.capacity
时抛出异常void setBytes(int index, ChannelBuffer src)
index
的位置 ,直到源缓冲区没有可读数据为止.
该方法除了会使用传输的字节数增加源缓冲区的readerIndex
外,基本与
setBytes(int, ChannelBuffer, int, int)
一样. 该方法并不修改该缓冲区的
readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + src.readableBytes
大于 this.capacity
时抛出异常void setBytes(int index, ChannelBuffer src, int length)
index
的位置. 该方法除了会使用传输的字节数增加源缓冲区的
readerIndex
外,基本与 setBytes(int, ChannelBuffer, int, int)
一样. 该方法并不修改该缓冲区的 readerIndex
和 writerIndex
.
length
- 传输的字节数
java.lang.IndexOutOfBoundsException
- 当index
小于0
、 index + length
大于
this.capacity
, 或length
大于
src.readableBytes
时抛出异常void setBytes(int index, ChannelBuffer src, int srcIndex, int length)
index
的位置 . 该方法并不修改该缓冲区和源缓冲区的
readerIndex
和 writerIndex
.
srcIndex
- 源缓冲区的开始索引length
- 传输的字节数
java.lang.IndexOutOfBoundsException
- 当index
小于0
、srcIndex
小于0
、
index + length
大于this.capacity
或者
srcIndex + length
大于 src.capacity
时抛出异常void setBytes(int index, byte[] src)
index
的位置 . 该方法并不修改该缓冲区和源缓冲区的
readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + src.length
大于
this.capacity
时抛出异常void 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
时抛出异常void setBytes(int index, java.nio.ByteBuffer src)
index
的位置 ,直到源缓冲的position到达限制为止.
该方法并不修改该缓冲区和源缓冲区的 readerIndex
和 writerIndex
.
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + src.remaining()
大于
this.capacity
时抛出异常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
- 输入流在IO期间抛出的异常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
- 通道在IO期间抛出的异常void setZero(int index, int length)
index
的位置填充NUL(0x00).该方法并不修改该缓冲区和源缓冲区的
readerIndex
和 writerIndex
.
length
- 填充NUL的数量
java.lang.IndexOutOfBoundsException
- 当index
小于0
或 index + length
大于
this.capacity
抛出异常byte readByte()
readerIndex
位置获取一个字节,并为 readerIndex
加1.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于1
时抛出异常short readUnsignedByte()
readerIndex
位置获取一个无符号字节,并为 readerIndex
加1.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于1
时抛出异常short readShort()
readerIndex
位置获取一个16位短整型,并为 readerIndex
加2.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于2
时抛出异常int readUnsignedShort()
readerIndex
位置获取一个 16位无符号短整型,并为 readerIndex
加2.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于2
时抛出异常int readMedium()
readerIndex
位置获取一个24位整型,并为 readerIndex
加3.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于3
时抛出异常int readUnsignedMedium()
readerIndex
位置获取一个24位无符号整型,并为 readerIndex
加3.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于3
时抛出异常int readInt()
readerIndex
位置获取一个32位整型,并为 readerIndex
加4.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于4
时抛出异常long readUnsignedInt()
readerIndex
位置获取一个32位 无符号整型,并为 readerIndex
加4.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于4
时抛出异常long readLong()
readerIndex
位置获取一个64位整型,并为 readerIndex
加8.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于8
时抛出异常char readChar()
readerIndex
位置获取一个2字节UTF-16字符,并为 readerIndex
加2.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于2
时抛出异常float readFloat()
readerIndex
位置获取一个32位浮点数,并为 readerIndex
加4.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于4
时抛出异常double readDouble()
readerIndex
位置获取一个64位浮点数,并为 readerIndex
加8.
java.lang.IndexOutOfBoundsException
- 当this.readableBytes
小于8
时抛出异常ChannelBuffer readBytes(int length)
readerIndex
处传输该缓冲区数据到一个新创建的缓冲区中,并使用传输的字节数(= length
)增加
readerIndex
. 返回一个readerIndex
和writerIndex
分别为0和
length
.
length
- 传输的字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常@Deprecated ChannelBuffer readBytes(ChannelBufferIndexFinder indexFinder)
bytesBefore(ChannelBufferIndexFinder)
和
readBytes(int)
代替.
ChannelBuffer readSlice(int length)
readerIndex
开始处切割该缓冲区的子范围作为新的缓冲区,并使用新切割的大小增加readerIndex
(= length
).
length
- 要切割的长度
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常@Deprecated ChannelBuffer readSlice(ChannelBufferIndexFinder indexFinder)
bytesBefore(ChannelBufferIndexFinder)
和
readSlice(int)
代替.
void readBytes(ChannelBuffer dst)
readBytes(ChannelBuffer, int, int)
一样.
java.lang.IndexOutOfBoundsException
- 当dst.writableBytes
大于 this.readableBytes
时抛出异常void readBytes(ChannelBuffer dst, int length)
length
)增加readerIndex. 该方法除了会使用传输的字节数量( =length
)增加目标的writerIndex外,基本与
readBytes(ChannelBuffer, int, int)
一样.
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
或 length
大于
dst.writableBytes
时抛出异常void readBytes(ChannelBuffer dst, int dstIndex, int length)
length
)增加readerIndex.
dstIndex
- 目标的开始索引length
- 传输字节数量
java.lang.IndexOutOfBoundsException
- 当指定的dstIndex
小于0
、 length
大于
this.readableBytes
或 dstIndex + length
大于
dst.capacity
时抛出异常void readBytes(byte[] dst)
dst.length
)增加readerIndex.
java.lang.IndexOutOfBoundsException
- 当dst.length
大于 this.readableBytes
时抛出异常void readBytes(byte[] dst, int dstIndex, int length)
length
)增加readerIndex.
dstIndex
- 目标的开始索引length
- 传输的字节数
java.lang.IndexOutOfBoundsException
- 当dstIndex
小于0
、 length
大于
this.readableBytes
或 dstIndex + length
大于
dst.length
时抛出异常void readBytes(java.nio.ByteBuffer dst)
java.lang.IndexOutOfBoundsException
- 当dst.remaining()
大于 this.readableBytes
时抛出异常void readBytes(java.io.OutputStream out, int length) throws java.io.IOException
length
- 传输的字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常
java.io.IOException
- 指定输出流在I/O期间抛出的异常int readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
length
- 要传输的最大字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常
java.io.IOException
- 指定通道在I/O期间抛出的异常void skipBytes(int length)
length
增加该缓冲区的readerIndex
.
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常@Deprecated int skipBytes(ChannelBufferIndexFinder indexFinder)
bytesBefore(ChannelBufferIndexFinder)
和
skipBytes(int)
代替.
void writeByte(int value)
writerIndex
设置指定的字节,并为writerIndex
加1. 24高序位会被忽略.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于1
时抛出异常void writeShort(int value)
writerIndex
设置指定的16位短整型,并为writerIndex
加2. 16高序位会被忽略.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于2
时抛出异常void writeMedium(int value)
writerIndex
设置指定的24位整型,并为writerIndex
加3.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于3
时抛出异常void writeInt(int value)
writerIndex
设置指定的32位整型,并为writerIndex
加4.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于4
时抛出异常void writeLong(long value)
writerIndex
设置指定的64位长整型,并为writerIndex
加8.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于8
时抛出异常void writeChar(int value)
writerIndex
设置指定的2字节UTF-16字符,并为writerIndex
加2.
16位高序位会被忽略.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于2
时抛出异常void writeFloat(float value)
writerIndex
设置指定的32位浮点数,并为writerIndex
加4.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于4
时抛出异常void writeDouble(double value)
writerIndex
设置指定的64位浮点数,并为writerIndex
加8.
java.lang.IndexOutOfBoundsException
- 当this.writableBytes
小于8
时抛出异常void writeBytes(ChannelBuffer src)
writerIndex
处,直到源缓冲不可读为止,并使用传输的字节数增加
wirterIndex
.除了该方法会使用传输的字节数增加源缓冲区的readerIndex
外,基本
writeBytes(ChannelBuffer, int, int)
和方法一样 .
java.lang.IndexOutOfBoundsException
- 当src.readableBytes
大于 this.writableBytes
时抛出异常void writeBytes(ChannelBuffer src, int length)
writerIndex
处,并使用传输的字节数( = length
)增加
wirterIndex
.除了该方法会使用传输的字节数( =length
)增加源缓冲区的
readerIndex
外,基本 writeBytes(ChannelBuffer, int, int)
和方法一样 ..
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.writableBytes
或length
大于
src.readableBytes
时抛出异常void writeBytes(ChannelBuffer src, int srcIndex, int length)
writerIndex
处,并使用传输的字节数( = length
)增加
wirterIndex
srcIndex
- 源缓冲区的开始索引length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 当srcIndex
小于0
、 srcIndex + length
大于
src.capacity
或length
大于
this.writableBytes
时抛出异常void writeBytes(byte[] src)
writerIndex
处,并使用传输的字节数( = src.length
)增加 wirterIndex
.
java.lang.IndexOutOfBoundsException
- 当src.length
大于 this.writableBytes
时抛出异常void writeBytes(byte[] src, int srcIndex, int length)
writerIndex
处,并使用传输的字节数( = length
)增加
wirterIndex
.
srcIndex
- 源数组的开始索引length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 当srcIndex
小于0
、 srcIndex + length
大于
src.length
或 length
大于
this.writableBytes
时抛出异常void writeBytes(java.nio.ByteBuffer src)
writerIndex
处,直到源缓冲的position达到限制为止,并使用传输的字节数增加
wirterIndex
.
java.lang.IndexOutOfBoundsException
- 当src.remaining()
大于 this.writableBytes
时抛出异常int writeBytes(java.io.InputStream in, int length) throws java.io.IOException
writerIndex
处,并使用传输的字节数( = length
)增加
wirterIndex
.
length
- 要传输的字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.writableBytes
时抛出异常
java.io.IOException
- 指定流在I/O期间抛出的异常int writeBytes(java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
writerIndex
处,并使用传输的字节数增加 wirterIndex
.
length
- 最大的传输字节数
java.lang.IndexOutOfBoundsException
- 当length
大于this.writableBytes
时抛出异常
java.io.IOException
- 指定通道在I/O期间抛出的异常void writeZero(int length)
writerIndex
.
length
- 填充到该缓冲区的NUL数量
java.lang.IndexOutOfBoundsException
- 当length
大于this.writableBytes
时抛出异常int indexOf(int fromIndex, int toIndex, byte value)
fromIndex
(包含)到toIndex
(不包含)区间查找第一个发现的value
.
如果fromIndex
大于toIndex
,则查找会反顺序执行.
该方法并不修改readerIndex
和writerIndex
.
int indexOf(int fromIndex, int toIndex, ChannelBufferIndexFinder indexFinder)
fromIndex
(包含)到toIndex
(不包含)区间查找indexFinder返回true的第一个发现的地方.
如果fromIndex
大于toIndex
,则查找会反顺序执行.
该方法并不修改readerIndex
和writerIndex
.
int bytesBefore(byte value)
readerIndex
(包含)到writerIndex
(不包含)区间查找第一个发现的
value
.
该方法并不修改readerIndex
和writerIndex
.
int bytesBefore(ChannelBufferIndexFinder indexFinder)
readerIndex
(包含)到writerIndex
(不包含)区间查找indexFinder返回true的第一个地方.
该方法并不修改readerIndex
和writerIndex
.
int bytesBefore(int length, byte value)
readerIndex
(包含)到readerIndex + length
(不包含)区间查找第一个发现value的地方 .
该方法并不修改readerIndex
和writerIndex
.
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常int bytesBefore(int length, ChannelBufferIndexFinder indexFinder)
readerIndex
(包含)到readerIndex + length
(不包含)区间查找indexFinder首次发现的地方.
该方法并不修改readerIndex
和writerIndex
.
java.lang.IndexOutOfBoundsException
- 当length
大于this.readableBytes
时抛出异常int bytesBefore(int index, int length, byte value)
index + length
(不包含)区间查找第一个发现value的地方.
该方法并不修改readerIndex
和writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果index + length
大于 this.capacity
时抛出异常int bytesBefore(int index, int length, ChannelBufferIndexFinder indexFinder)
index + length
(不包含)区间查找indexFinder首次发现的地方.
该方法并不修改readerIndex
和writerIndex
.
java.lang.IndexOutOfBoundsException
- 如果index + length
大于 this.capacity
时抛出异常ChannelBuffer copy()
buf.copy(buf.readerIndex(), buf.readableBytes())
. 且并不修改该缓冲区的
readerIndex
和writerIndex
.
ChannelBuffer copy(int index, int length)
readerIndex
和
writerIndex
.
ChannelBuffer slice()
buf.slice(buf.readerIndex(), buf.readableBytes())
. 且并不修改该缓冲区的
readerIndex
和writerIndex
.
ChannelBuffer slice(int index, int length)
readerIndex
和writerIndex
.
ChannelBuffer duplicate()
buf.slice(0, buf.capacity())
. 且并不修改该缓冲区的 readerIndex
和
writerIndex
.
java.nio.ByteBuffer toByteBuffer()
buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())
.
且并不修改该缓冲区的 readerIndex
和 writerIndex
.
java.nio.ByteBuffer toByteBuffer(int index, int length)
readerIndex
和 writerIndex
.
java.nio.ByteBuffer[] toByteBuffers()
buf.toByteBuffers(buf.readerIndex(), buf.readableBytes())
.
且并不修改该缓冲区的 readerIndex
和 writerIndex
.
java.nio.ByteBuffer[] toByteBuffers(int index, int length)
readerIndex
和 writerIndex
.
boolean hasArray()
array()
和
arrayOffset()
.
byte[] array()
java.lang.UnsupportedOperationException
- 如果没有可访问的字节数组则抛出异常int arrayOffset()
java.lang.UnsupportedOperationException
- 如果没有可访问的字节数组则抛出异常java.lang.String toString(java.nio.charset.Charset charset)
buf.toString(buf.readerIndex(), buf.readableBytes(), charsetName)
. 该方法并不修改readerIndex
和 writerIndex
.
java.nio.charset.UnsupportedCharsetException
- 如果指定的字符集在当前VM中不支持,则抛出异常java.lang.String toString(int index, int length, java.nio.charset.Charset charset)
readerIndex
和 writerIndex
.
@Deprecated java.lang.String toString(java.lang.String charsetName)
toString(Charset)
代替.
@Deprecated java.lang.String toString(java.lang.String charsetName, ChannelBufferIndexFinder terminatorFinder)
bytesBefore(ChannelBufferIndexFinder)
和
toString(int, int, Charset)
代替.
@Deprecated java.lang.String toString(int index, int length, java.lang.String charsetName)
bytesBefore(int, int, ChannelBufferIndexFinder)
和
toString(int, int, Charset)
代替.
@Deprecated java.lang.String toString(int index, int length, java.lang.String charsetName, ChannelBufferIndexFinder terminatorFinder)
bytesBefore(int, int, ChannelBufferIndexFinder)
和
toString(int, int, Charset)
代替.
int hashCode()
java.lang.Object
中的 hashCode
boolean equals(java.lang.Object obj)
readerIndex()
和 writerIndex()
. 如果指定的对象不是
ChannelBuffer
类型或为null,则返回false.
java.lang.Object
中的 equals
int compareTo(ChannelBuffer buffer)
strcmp
, memcmp
和String.compareTo(String)
.
java.lang.Comparable<ChannelBuffer>
中的 compareTo
java.lang.String toString()
readerIndex()
,
writerIndex()
和capacity()
.
java.lang.Object
中的 toString
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |