JavaTM Platform
Standard Ed. 6

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

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

メソッドの詳細

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

read

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

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

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

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

JavaTM Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。