模块 java.base

接口 WritableByteChannel

所有父级接口:
AutoCloseable , Channel , Closeable
所有已知的子接口:
ByteChannel , GatheringByteChannel , SeekableByteChannel
所有已知的实现类:
DatagramChannel , FileChannel , Pipe.SinkChannel , SocketChannel

public interface WritableByteChannel extends Channel
可以写入字节的通道。

在任何给定时间,一个可写通道上只能进行一个写操作。如果一个线程在通道上启动写操作,那么任何其他试图启动另一个写操作的线程都将阻塞,直到第一个操作完成。其他类型的 I/O 操作是否可以与写入操作同时进行取决于通道的类型。

自从:
1.4
  • 方法总结

    修饰符和类型
    方法
    描述
    int
    将给定缓冲区中的字节序列写入此通道。

    在接口 java.nio.channels.Channel 中声明的方法

    close, isOpen
  • 方法详情

    • 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 错误