-
- All Superinterfaces:
-
AutoCloseable
,Channel
,Closeable
,ReadableByteChannel
- 所有已知实现类:
-
DatagramChannel
,FileChannel
,Pipe.SourceChannel
,SocketChannel
public interface ScatteringByteChannel extends ReadableByteChannel
可以将字节读入缓冲区序列的通道。散射读取操作在单个调用中将字节序列读入给定的缓冲器序列中的一个或多个。 当实现网络协议或文件格式时,散射读取通常是有用的,例如,将数据分组成由一个或多个固定长度的标题后跟可变长度的主体组成的段。
GatheringByteChannel
界面中定义了类似的采集写入操作。- 从以下版本开始:
- 1.4
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 long
read(ByteBuffer[] dsts)
从该通道读取到给定缓冲区的字节序列。long
read(ByteBuffer[] dsts, int offset, int length)
从该通道读取字节序列到给定缓冲区的子序列中。-
Methods inherited from interface java.nio.channels.ReadableByteChannel
read
-
-
-
-
方法详细信息
-
read
long read(ByteBuffer[] dsts, int offset, int length) throws IOException
从该通道读取字节序列到给定缓冲区的子序列中。该方法的调用尝试从该通道读取r个字节,其中r是给定缓冲区数组的指定子序列剩余的总字节数,也就是说,
dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()
假设长度为n的字节序列被读取,其中
0
<=
n<=
r 。 该序列的最初dsts[offset].remaining()
个字节被传送到缓冲区dsts[offset]
,直到下一个dsts[offset+1].remaining()
字节被传送到缓冲区dsts[offset+1]
等等,直到整个字节序列被传送到给定的缓冲区。 尽可能多的字节被传送到每个缓冲器中,因此除了最后更新的缓冲器之外,每个更新的缓冲器的最终位置被保证等于该缓冲器的限制。可以随时调用此方法。 但是,如果另一个线程已经在该通道上启动了读取操作,那么此方法的调用将阻塞,直到第一个操作完成。
- 参数
-
dsts
- 要传输字节的缓冲区 -
offset
- 要传输字节的第一个缓冲区的缓冲区中的偏移量; 必须是非负数,不得大于dsts.length
-
length
- 要访问的缓冲区的最大数量; 必须是非负数,不得大于dsts.length
-offset
- 结果
-
读取的字节数,可能为零,如果通道已达到流出端,
-1
- 异常
-
IndexOutOfBoundsException
- 如果offset
和length
参数的前提条件不成立 -
NonReadableChannelException
- 如果此通道未打开阅读 -
ClosedChannelException
- 如果此通道关闭 -
AsynchronousCloseException
- 如果另一个线程在读取操作正在进行时关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在读取操作正在进行中断当前线程,从而关闭通道并设置当前线程的中断状态 -
IOException
- 如果发生其他I / O错误
-
read
long read(ByteBuffer[] dsts) throws IOException
从该通道读取到给定缓冲区的字节序列。对这种
c.read(dsts)
形式的方法的调用与调用的方式完全相同c.read(dsts, 0, dsts.length);
- 参数
-
dsts
- 要传输字节的缓冲区 - 结果
-
读取的字节数,可能为零,如果通道已达到流出端,
-1
- 异常
-
NonReadableChannelException
- 如果此通道未打开读取 -
ClosedChannelException
- 如果此通道关闭 -
AsynchronousCloseException
- 如果另一个线程在读取操作正在进行时关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在读取操作正在进行中断当前线程,从而关闭通道并设置当前线程的中断状态 -
IOException
- If some other I/O error occurs
-
-