-
- All Superinterfaces:
-
AutoCloseable
,Channel
,Closeable
- All Known Subinterfaces:
-
ByteChannel
,GatheringByteChannel
,SeekableByteChannel
- 所有已知实现类:
-
DatagramChannel
,FileChannel
,Pipe.SinkChannel
,SocketChannel
public interface WritableByteChannelextends 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错误
-
-