JavaTM 2
Platform
Std. Ed. v1.4.0

java.nio.channels
インタフェース ScatteringByteChannel

すべてのスーパーインタフェース:
Channel, 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
 
インタフェース java.nio.channels.Channel から継承したメソッド
close, isOpen
 

メソッドの詳細

read

public 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 パラメータの前提条件が満たされていない場合
NonReadableChannelException - このチャネルが読み込み可能でない場合
ClosedChannelException - このチャネルがクローズしている場合
AsynchronousCloseException - 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException - 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込み状態が設定された場合
IOException - その他の入出力エラーが発生した場合

read

public long read(ByteBuffer[] dsts)
          throws IOException
このチャネルのバイトシーケンスを指定されたバッファに読み込みます。

このメソッドを c.read(dsts) の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。

 c.read(dsts, 0, srcs.length);

パラメータ:
dsts - バイトの転送先バッファ
戻り値:
読み込まれた文字数。ゼロか、チャネルがストリームの終わりに達している場合は -1
例外:
NonReadableChannelException - このチャネルが読み込み可能でない場合
ClosedChannelException - このチャネルがクローズしている場合
AsynchronousCloseException - 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException - 読み込み操作の進行中に別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込み状態が設定された場合
IOException - その他の入出力エラーが発生した場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.