- 五、ByteBuffer双向通道
- 5. ByteBuffer双向通道
- 5.1 使用类
- 5.1 方法说明
- 5.1.1 构造方法
- 5.1.2 当前数组空闲的大小
- 5.1.3 返回当前分配的数组大小
- 5.1.4 当前数据大小
- 5.1.5 获取缓冲区有效字节数组的一个拷贝
- 5.1.6 获取缓冲区
- 5.1.7 释放内存
- 5.1.8 收缩通道
- 5.1.9 缓冲区头部写入
- 5.1.10 缓冲区尾部写入
- 5.1.11 从缓冲区尾部读取数据
- 5.1.12 从缓冲区头部读取数据
- 5.1.13 从缓冲区头部读取数据
- 5.1.14 从缓冲区头部读取数据
- 5.1.15 从缓冲区头部读取数据
- 5.1.16 从缓冲区头部读取数据
- 5.1.17 从缓冲区头部读取数据
- 5.1.18 等待收到期望的数据
- 5.1.19 缓冲区某个位置写入数据
- 5.1.20 重新分配的空间大小
- 5.1.21 从缓冲区某个位置开始读取数据
- 5.1.22 查找特定 byte 标识的位置
- 5.1.23 读取一行
- 5.1.24 读取一段,使用 byte数组 分割
- 5.1.25 保存到文件
五、ByteBuffer双向通道
5. ByteBuffer双向通道
5.1 使用类
org.voovan.tools.ByteBufferChannel
5.1 方法说明
5.1.1 构造方法
public ByteBufferChannel(int size)
public ByteBufferChannel()
size
: 目标缓冲区的大小。返回值
: 移除第一个字节后的字符串。
5.1.2 当前数组空闲的大小
public int free()
返回值
: 当前数组空闲的大小。
5.1.3 返回当前分配的数组大小
public int capacity()
返回值
: 当前分配的数组大小。
5.1.4 当前数据大小
public int size()
返回值
: 数据大小。
5.1.5 获取缓冲区有效字节数组的一个拷贝
public int array()
修改这个数组将不会影响当前对象,返回 0 到 size 的有效数据
返回值
: 缓冲区有效字节数组。
5.1.6 获取缓冲区
public ByteBuffer getByteBuffer()
返回 0 到 size 的有效数据 修改这个数组将不会影响当前对象 数据随时会变化,使用后下次使用建议重新获取,否则可能导致数据不全
返回值
: ByteBuffer 对象。
5.1.7 释放内存
public void release()
5.1.8 收缩通道
public void compact()
将通过getByteBuffer()方法获得 ByteBuffer 对象的操作同步到 ByteBufferChannel如果不需要同步,则不用调用这个方法如果之前最后一次通过getByteBuffer()方法获得过 ByteBuffer,则使用这个 Byte 来收缩通道将 (position 到 limit) 之间的数据 移动到 (0 到 limit - position) 其他情形将不做任何操作所以 建议 getByteBuffer() 和 compact() 成对操作
5.1.9 缓冲区头部写入
public int writeEnd(ByteBuffer src)
返回值
: 需要写入的缓冲区 ByteBuffer 对象。返回值
: 写入的数据大小。
5.1.10 缓冲区尾部写入
public int writeHead(ByteBuffer src)
返回值
: 需要写入的缓冲区 ByteBuffer 对象。返回值
: 写入的数据大小。
5.1.11 从缓冲区尾部读取数据
public int readHead(ByteBuffer dst)
返回值
: 需要读入数据的缓冲区ByteBuffer 对象。返回值
: 读出的数据大小。
5.1.12 从缓冲区头部读取数据
public int readEnd(ByteBuffer dst)
返回值
: 需要读入数据的缓冲区ByteBuffer 对象。返回值
: 读出的数据大小。
5.1.13 从缓冲区头部读取数据
public boolean shrink(int shrinkSize)
shrinkSize
: 收缩的偏移量, 大于0,从尾部收缩数据,小于0 从头部收缩数据。- *
返回值
:true: 成功, false: 失败。
5.1.14 从缓冲区头部读取数据
public byte get(int offset) throws IndexOutOfBoundsException
- 获取某个偏移量位置的 byte 数据 该操作不会导致通道内的数据发生变化
offset
: 偏移量的位置。- *
返回值
: 数据。
5.1.15 从缓冲区头部读取数据
public int get(int offset,
byte[] dst,
int length)
- 获取某个偏移量位置的 byte 数据数组 该操作不会导致通道内的数据发生变化
offset
: 偏移量。dst
: 目标数组。length
: 长度。- *
返回值
: 获取数据的长度。
5.1.16 从缓冲区头部读取数据
public int get(byte[] dst)
- 获取某个偏移量位置的 byte 数据数组 该操作不会导致通道内的数据发生变化
dst
: 目标数组。- *
返回值
: 获取数据的长度。
5.1.17 从缓冲区头部读取数据
public boolean waitData(int length, int timeout)
- 等待期望的数据长度
length
: 期望的数据长度timeout
: 超时时间,单位: 秒- *
返回值
: true: 具备期望长度的数据, false: 等待数据超时。
5.1.18 等待收到期望的数据
public boolean waitData(byte[] mark, int timeout)
- 等待期望的数据长度
mark
: 期望出现的数据timeout
: 超时时间,单位: 秒- *
返回值
: true: 具备期的数据, false: 等待数据超时。
5.1.19 缓冲区某个位置写入数据
public int write(int writePosition, ByteBuffer src)
writePosition
: 缓冲区中的位置src
: 需要写入的缓冲区 ByteBuffer 对象- *
返回值
: 写入的数据大小。
5.1.20 重新分配的空间大小
public boolean reallocate(int newSize)
newSize
: 重新分配的空间大小- *
返回值
: true:成功, false:失败。
5.1.21 从缓冲区某个位置开始读取数据
public int read(int readPosition, ByteBuffer dst)
readPosition
: 缓冲区中的位置dst
: 需要读入数据的缓冲区ByteBuffer 对象- *
返回值
: 读出的数据大小。
5.1.22 查找特定 byte 标识的位置
public int indexOf(byte[] mark)
- byte 标识数组第一个字节的索引位置
mark
: byte 标识数组- *
返回值
: 第一个字节的索引位置。
5.1.23 读取一行
public String readLine()
- *
返回值
: 字符串。
5.1.24 读取一段,使用 byte数组 分割
public ByteBuffer readWithSplit(byte[] splitByte)
- 返回的 byte数组中不包含分割 byte 数组的内容
mark
: 分割字节数组timeout
: 超时时间,单位: 秒- *
返回值
: 字节数组。
5.1.25 保存到文件
public void saveToFile(String filePath, long length)
filePath
: 文件路径length
: 需要保存的长度- *
返回值
: 字节数组。