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

インタフェースWritableByteChannel

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


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

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

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