public interface GatheringByteChannel extends WritableByteChannel
一个收集写作业写到,在一次调用中,序列的一个或多个指定的缓冲区字节序列。当实现网络协议或文件格式时,收集写入通常是有用的,例如,将分组数据分成由一个或多个固定长度的头和一个可变长度的体组成的段。类似的散射读操作都在ScatteringByteChannel
接口定义。
Modifier and Type | Method and Description |
---|---|
long |
write(ByteBuffer[] srcs)
从给定的缓冲区写入该通道的一个字节序列。
|
long |
write(ByteBuffer[] srcs, int offset, int length)
写一个字节序列的子序列对该通道从给定的缓冲区。
|
write
long write(ByteBuffer[] srcs, int offset, int length) throws IOException
尝试写了R字节通道,其中R是总字节数保持在指定的顺序给定的缓冲数组,即,
此刻,调用该方法。srcs[offset].remaining() + srcs[offset+1].remaining() + ... + srcs[offset+length-1].remaining()
假设一个字节序列的长度N是书面的,在0 <= N <= R.到这个序列的第一srcs[offset].remaining()字节被写入缓冲srcs[offset],到下一个srcs[offset+1].remaining()字节被写入缓冲区srcs[offset+1],等等,直到整个字节顺序写。尽可能多的字节是从每个缓冲区写的,因此每个更新的缓冲区的最终位置,除了最后一个更新的缓冲区,保证是等于该缓冲区的限制。
除非另有规定,一个写操作将返回后,才写所有的R请求字节。某些类型的信道,根据它们的状态,可以只写一些字节或可能没有一个。例如,在非阻塞模式下的套接字通道不能写入任何大于在套接字输出缓冲区中的字节数的字节数。
这种方法可能在任何时候被调用。如果另一个线程已经在这个通道上启动了一个写操作,那么这个方法的调用将阻塞,直到第一个操作完成。
srcs
的缓冲区字节进行检索
offset
-在第一缓冲区字节进行检索缓冲数组的偏移;必须是非负的且不大于
srcs.length
length
-缓冲区的最大数量被访问;必须是非负的且不大于
srcs.length -
offset
IndexOutOfBoundsException
-如果在
offset和
length参数的前提条件不成立
NonWritableChannelException
-如果这个渠道没有打开写作
ClosedChannelException
-如果这通道关闭
AsynchronousCloseException
如果另一个线程关闭通道,而写操作正在进行中
ClosedByInterruptException
如果另一个线程中断当前线程,而写操作正在进行,从而关闭通道和设置当前线程的中断状态
IOException
-如果其他I/O错误发生
long write(ByteBuffer[] srcs) throws IOException
这种形式的c.write(srcs)方法调用的行为以同样的方式调用
c.write(srcs, 0, srcs.length);
srcs
的缓冲区字节进行检索
NonWritableChannelException
-如果这个渠道没有打开写作
ClosedChannelException
-如果这通道关闭
AsynchronousCloseException
如果另一个线程关闭通道,而写操作正在进行中
ClosedByInterruptException
如果另一个线程中断当前线程,而写操作正在进行,从而关闭通道和设置当前线程的中断状态
IOException
-如果其他I/O错误发生
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.