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