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