- すべてのスーパー・インタフェース:
AutoCloseable
,Channel
,Closeable
,WritableByteChannel
- 既知のすべての実装クラス:
DatagramChannel
,FileChannel
,Pipe.SinkChannel
,SocketChannel
この「収集」書込み操作では、1回の呼出しで、指定した1つ以上のバッファ・シーケンスから連続する複数のバイト(バイト・シーケンス)を書き込むことができます。 「収集」書込みは、通常、ネットワーク・プロトコルやファイル形式(たとえば、データを1個以上の固定長のヘッダーと可変長の本体から成るセグメントにグループ化するようなファイル形式)を実装する際に便利です。 これに類似した「分散」読込み操作は、ScatteringByteChannel
インタフェースで定義されます。
- 導入されたバージョン:
- 1.4
-
メソッドのサマリー
修飾子と型メソッド説明long
write
(ByteBuffer[] srcs) このチャネルのバイト・シーケンスを指定されたバッファから書き出します。long
write
(ByteBuffer[] srcs, int offset, int length) このチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスから書き出します。インタフェースjava.nio.channels.WritableByteChannelで宣言されたメソッド
write
-
メソッドの詳細
-
write
long write(ByteBuffer[] srcs, int offset, int length) throws IOException このチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスから書き出します。このチャネルに最大rバイトを書き込もうとします。rは、指定されたバッファ配列の指定されたサブシーケンスに残っている合計バイト数です。
srcs[offset].remaining() + srcs[offset+1].remaining() + ... + srcs[offset+length-1].remaining()
長さnのバイト・シーケンスが書き込まれるとします。ここで、
0
<=
n<=
rです。 このシーケンスの最初のsrcs[offset].remaining()
バイトまでバッファsrcs[offset]
から書き込まれ、次のsrcs[offset+1].remaining()
バイトまでバッファsrcs[offset+1]
から書き込まれ、さらにバイト・シーケンス全体が書き込まれるまで書き込まれます。 各バッファから最大限のバイト数が書き込まれるため、更新された個々のバッファの最終的な位置は、最終更新バッファを除いて、このバッファのリミットと等しくなります。特に指定がないかぎり、要求されたrバイトがすべて書き込まれると書込み操作は終了します。 チャネルの種類によっては、その状態に応じて、一部のバイトしか書き込まれない場合や、まったく書込みが行われない場合もあります。 たとえば非ブロック・モードのソケット・チャネルでは、ソケットの出力バッファ内のバイト数が最大書込みバイト数になります。
このメソッドはいつでも呼び出すことができます。 ただし、ほかのスレッドがこのチャネルに対して書込み操作を開始している場合、このメソッドの呼出しは最初の操作が終わるまでブロックされます。
- パラメータ:
srcs
- バイトの取得先バッファoffset
- 最初のバイトの取得先となるバッファ配列内のオフセット。srcs.length
以下の負でない値length
- アクセスするバッファの最大数。負以外で、srcs.length
以下である必要があります -offset
- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- 例外:
IndexOutOfBoundsException
-offset
パラメータとlength
パラメータの前提条件が満たされていない場合NonWritableChannelException
- このチャネルが書込み可能でない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
write
long write(ByteBuffer[] srcs) throws IOException このチャネルのバイト・シーケンスを指定されたバッファから書き出します。c.write(srcs)
形式のこのメソッドの起動は、起動とまったく同じように動作c.write(srcs, 0, srcs.length);
- パラメータ:
srcs
- バイトの取得先バッファ- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- 例外:
NonWritableChannelException
- このチャネルが書込み可能でない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-