public interface WritableByteChannel
implements Channel
java.nio.channels.WritableByteChannel |
Known Indirect Subclasses |
可以写入字节的通道。
在任何给定的时间,只有一个可写频道的写操作可能正在进行。 如果一个线程启动对某个通道的写操作,则任何尝试启动另一个写操作的其他线程都将阻塞,直到第一个操作完成。 其他类型的I / O操作是否可以与写入操作同时进行取决于通道的类型。
Public methods |
|
---|---|
abstract int |
write(ByteBuffer src) 从给定缓冲区中向此通道写入一个字节序列。 |
Inherited methods |
|
---|---|
From interface java.nio.channels.Channel
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
int write (ByteBuffer src)
从给定缓冲区中向此通道写入一个字节序列。
试图将最多 r个字节写入通道,其中 r是在调用此方法时缓冲区中剩余的字节数,即 src.remaining() 。
假设一个长度为n的字节序列被写入,其中0 <= n <= r 。 该字节序列将从索引p开始的缓冲区中传输,其中p是在调用此方法时缓冲区的位置; 写入的最后一个字节的索引将为p + n - 1 。 返回时,缓冲区的位置将等于p + n ; 其限制不会改变。
除非另有说明,否则只有在写入所有r请求的字节后才会返回写入操作。 根据其状态,某些类型的通道可能只写入一些字节或可能根本没有。 例如,非阻塞模式下的套接字通道不能写入比套接字输出缓冲区中的空闲字节更多的字节。
这个方法可以在任何时候调用。 但是,如果另一个线程已经在此通道上启动了写操作,则此方法的调用将会阻塞,直到第一个操作完成。
Parameters | |
---|---|
src |
ByteBuffer : The buffer from which bytes are to be retrieved |
Returns | |
---|---|
int |
The number of bytes written, possibly zero |
Throws | |
---|---|
NonWritableChannelException |
If this channel was not opened for writing |
ClosedChannelException |
If this channel is closed |
AsynchronousCloseException |
If another thread closes this channel while the write operation is in progress |
ClosedByInterruptException |
If another thread interrupts the current thread while the write operation is in progress, thereby closing the channel and setting the current thread's interrupt status |
IOException |
If some other I/O error occurs |