モジュール java.base
パッケージ java.nio.channels

インタフェースWritableByteChannel

すべてのスーパー・インタフェース:
AutoCloseable, Channel, Closeable
既知のすべてのサブインタフェース:
ByteChannel, GatheringByteChannel, SeekableByteChannel
既知のすべての実装クラス:
DatagramChannel, FileChannel, Pipe.SinkChannel, SocketChannel

public interface WritableByteChannel extends Channel
バイトを書き込むことができるチャネルです。

書込み可能なチャネル上で、並行して複数の書込み操作を実行することはできません。 チャネル上で書込み操作を開始したスレッドがある場合、新たな書込み操作を開始しようとするその他のスレッドは、最初の操作が完了するまでブロックされます。 書込み操作とその他の入出力操作を同時並行で実行できるかどうかは、チャネルの種類によって決まります。

導入されたバージョン:
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 - その他の入出力エラーが発生した場合