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