public interface ScatteringByteChannel extends ReadableByteChannel
分散読み込み操作は、1 回の呼び出しで、指定されたバッファーシーケンス (複数可) に単一のバイトシーケンスを読み込みます。通常、分散読み込みは、特定のネットワークプロトコルやファイル形式 (データを 1 個以上の固定長ヘッダーと可変長の本体からなるセグメントにまとめる働きを持つものなど) を実装する場合に役立ちます。これに類似した収集書き込み操作は、GatheringByteChannel
インタフェースで定義されます。
修飾子と型 | メソッドと説明 |
---|---|
long |
read(ByteBuffer[] dsts)
このチャネルのバイトシーケンスを指定されたバッファーに読み込みます。
|
long |
read(ByteBuffer[] dsts, int offset, int length)
このチャネルのバイトシーケンスを指定されたバッファーのサブシーケンスに読み込みます。
|
read
long read(ByteBuffer[] dsts, int offset, int length) throws IOException
このメソッド呼び出しは、このチャネルから最大 r バイトを読み取ろうとします。r は、このメソッドの呼び出し時に指定されたバッファー配列の指定されたサブシーケンスに残っている合計バイト数です。
dsts[offset].remaining() + dsts[offset+1].remaining() + ... + dsts[offset+length-1].remaining()
長さ n (0 <= n <= r) のバイトシーケンスが読み取られるとします。このシーケンスの最初の dsts[offset].remaining() バイトまではバッファー dsts[offset] に転送され、次の dsts[offset+1].remaining() バイトまではバッファー dsts[offset+1] に転送されます。バイトシーケンス全部が指定されたバッファーに転送されるまで、この処理が繰り返されます。各バッファーには最大限のバイトが転送されるため、最終更新バッファーを除く個々の更新バッファーの最終的な位置は、このバッファーのリミットと等しくなります。
このメソッドはいつでも呼び出すことができます。ただし、ほかのスレッドがこのチャネルに対して読み込み操作を開始している場合、このメソッドの呼び出しは最初の操作が終わるまでブロックされます。
dsts
- バイトの転送先バッファーoffset
- 最初のバイトの転送先となるバッファー配列内のオフセット。dsts.length 以下の負でない値length
- アクセスされる最大バッファー数。dsts.length - offset 以下の負でない値IndexOutOfBoundsException
- offset パラメータと length パラメータの前提条件が満たされていない場合NonReadableChannelException
- このチャネルが読み取り可能でない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読み取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読み取り操作の進行中に、別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合long read(ByteBuffer[] dsts) throws IOException
このメソッドを c.read(dsts) の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。
c.read(dsts, 0, dsts.length);
dsts
- バイトの転送先バッファーNonReadableChannelException
- このチャネルが読み取り可能でない場合ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読み取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読み取り操作の進行中に、別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.