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, 2013, Oracle and/or its affiliates. All rights reserved.