public interface WritableByteChannel extends Channel
書込み可能なチャネル上で、並行して複数の書込み操作を実行することはできません。チャネル上で書込み操作を開始したスレッドがある場合、新たな書込み操作を開始しようとするその他のスレッドは、最初の操作が完了するまでブロックされます。書込み操作とその他の入出力操作を同時並行で実行できるかどうかは、チャネルの種類によって決まります。
修飾子と型 | メソッドと説明 |
---|---|
int |
write(ByteBuffer src)
このチャネルのバイト・シーケンスを指定のバッファから書き出します。
|
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
- その他の入出力エラーが発生した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.