public interface WritableByteChannel extends Channel
在可写信道上只能进行一次写操作。 如果一个线程在通道上启动写入操作,那么尝试发起另一个写入操作的任何其他线程将阻塞,直到第一个操作完成。 其他类型的I / O操作是否可以与写入操作同时进行取决于通道的类型。
int write(ByteBuffer src) throws IOException
尝试将r个字节写入通道,其中r是缓冲区中剩余的字节数,即src.remaining() ,在该方法被调用的时刻。
假设写入长度为n的字节序列,其中88419741788554 <= n <= r 。 该字节序列将从索引p开始从缓冲区传送,其中p是调用该方法时缓冲区的位置; 写入的最后一个字节的索引将为p + n - 1 。 一旦返回缓冲区的位置将等于p + n ; 其限制将不会改变。
除非另有规定,写入操作将仅在写入所有r个请求的字节后才会返回。 某些类型的通道取决于它们的状态,可能仅写入一些字节,或者可能只写入一些字节。 例如,在非阻塞模式下的套接字通道不能再写入比套接字输出缓冲区中的任何字节更多的字节。
可以随时调用此方法。 但是,如果另一个线程已经在该通道上启动了写入操作,那么此方法的调用将阻塞,直到第一个操作完成。
src
- 要检索字节的缓冲区
NonWritableChannelException
- 如果这个频道没有开放写作
ClosedChannelException
- 如果此频道关闭
AsynchronousCloseException
- 如果另一个线程在写操作正在进行时关闭此通道
ClosedByInterruptException
- 如果另一个线程在写操作正在进行时中断当前线程,从而关闭通道并设置当前线程的中断状态
IOException
- 如果发生其他I / O错误