-
- すべてのスーパー・インタフェース:
AutoCloseable
,Channel
,Closeable
,WritableByteChannel
- 既知のすべての実装クラス:
DatagramChannel
,FileChannel
,Pipe.SinkChannel
,SocketChannel
public interface GatheringByteChannel extends WritableByteChannel
バッファ・シーケンスからバイトを書き込むことができるチャネルです。この「収集」書込み操作では、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
- その他の入出力エラーが発生した場合
-
-