- 所有超级接口:
-
AutoCloseable
,Channel
,Closeable
- 所有已知子接口:
-
ByteChannel
,GatheringByteChannel
,SeekableByteChannel
- 所有已知实现类:
-
DatagramChannel
,FileChannel
,Pipe.SinkChannel
,SocketChannel
可以写入字节的通道。
在任何给定时间,可写通道上只能有一个写操作正在进行。如果一个线程启动了通道上的写操作,那么任何试图启动另一个写操作的线程将被阻塞,直到第一个操作完成。其他类型的I/O操作是否可以与写操作同时进行取决于通道的类型。
- 自版本:
- 1.4
-
Method Summary
-
Method Details
-
write
从给定缓冲区向此通道写入字节序列。尝试将最多 r 字节写入通道,其中 r 是在调用此方法时缓冲区中剩余的字节数,即
src.remaining()
。假设写入了长度为 n 的字节序列,其中
0
<=
n<=
r。此字节序列将从索引 p 处的缓冲区开始传输,其中 p 是调用此方法时缓冲区的位置;最后一个写入的字节的索引将是 p+
n-
1
。返回时,缓冲区的位置将等于 p+
n;其限制不会改变。除非另有说明,写操作将仅在写入所有请求的 r 字节后才返回。某些类型的通道,根据其状态,可能只写入部分字节,或者可能根本不写入。例如,非阻塞模式下的套接字通道不能写入超出套接字输出缓冲区中可用字节的字节数。
此方法可以随时调用。但是,如果另一个线程已经在此通道上启动了写操作,则此方法的调用将被阻塞,直到第一个操作完成。
- 参数:
-
src
- 要检索字节的缓冲区 - 返回:
- 写入的字节数,可能为零
- 抛出:
-
NonWritableChannelException
- 如果此通道未打开以进行写入 -
ClosedChannelException
- 如果此通道已关闭 -
AsynchronousCloseException
- 如果另一个线程在写操作进行中关闭此通道 -
ClosedByInterruptException
- 如果另一个线程在写操作进行中中断当前线程,从而关闭通道并设置当前线程的中断状态 -
IOException
- 如果发生其他I/O错误
-