- すべてのスーパー・インタフェース:
- AutoCloseable,- Channel,- Closeable,- ReadableByteChannel
- 既知のすべての実装クラス:
- DatagramChannel,- FileChannel,- Pipe.SourceChannel,- SocketChannel
public interface ScatteringByteChannel extends ReadableByteChannel
バッファ・シーケンスにバイトを読み込むことができるチャネルです。
 
 分散読込み操作は、1回の呼出しで、指定されたバッファ・シーケンス(複数可)に単一のバイト・シーケンスを読み込みます。 通常、分散読込みは、特定のネットワーク・プロトコルやファイル形式(データを1個以上の固定長ヘッダーと可変長の本体からなるセグメントにまとめる働きを持つものなど)を実装する場合に役立ちます。 これに類似した収集書込み操作は、GatheringByteChannelインタフェースで定義されます。   
- 導入されたバージョン:
- 1.4
- 
メソッドのサマリー修飾子と型 メソッド 説明 longread(ByteBuffer[] dsts)このチャネルのバイト・シーケンスを指定されたバッファに読み込みます。longread(ByteBuffer[] dsts, int offset, int length)このチャネルのバイト・シーケンスを指定されたバッファのサブシーケンスに読み込みます。
- 
メソッドの詳細- 
readlong 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以下の負でない値
- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は-1
- 例外:
- IndexOutOfBoundsException-- offsetパラメータと- lengthパラメータの前提条件が満たされていない場合
- IllegalArgumentException- いずれかのバッファが読取り専用の場合
- NonReadableChannelException- このチャネルが読取り可能でない場合
- ClosedChannelException- このチャネルがクローズしている場合
- AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
- ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合
- IOException- その他の入出力エラーが発生した場合
 
- 
readlong read(ByteBuffer[] dsts) throws IOExceptionこのチャネルのバイト・シーケンスを指定されたバッファに読み込みます。このメソッドを c.read(dsts)の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。c.read(dsts, 0, dsts.length); - パラメータ:
- dsts- バイトの転送先バッファ
- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は-1
- 例外:
- IllegalArgumentException- いずれかのバッファが読取り専用の場合
- NonReadableChannelException- このチャネルが読取り可能でない場合
- ClosedChannelException- このチャネルがクローズしている場合
- AsynchronousCloseException- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
- ClosedByInterruptException- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合
- IOException- その他の入出力エラーが発生した場合
 
 
-