モジュール 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 - その他の入出力エラーが発生した場合