JavaTM 2
Platform
Std. Ed. v1.4.0

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

すべてのスーパーインタフェース:
Channel
既知のサブインタフェースの一覧:
ByteChannel, ScatteringByteChannel
既知の実装クラスの一覧:
DatagramChannel, FileChannel, Pipe.SourceChannel, SocketChannel

public interface ReadableByteChannel
extends Channel

バイトを読み取ることができるチャネルです。

読み込み可能なチャネル上で、同時に複数の読み込み操作を実行することはできません。チャネル上で読み込み操作を開始したスレッドがある場合、新たな読み込み操作を開始しようとする別のスレッドは、最初の操作が完了するまでブロックされます。読み込み操作とその他の入出力操作を同時並行で実行できるかどうかは、チャネルの種類によって決まります。

導入されたバージョン:
1.4

メソッドの概要
 int read(ByteBuffer dst)
          このチャネルのバイトシーケンスを指定のバッファに読み込みます。
 
インタフェース java.nio.channels.Channel から継承したメソッド
close, isOpen
 

メソッドの詳細

read

public int read(ByteBuffer dst)
         throws IOException
このチャネルのバイトシーケンスを指定のバッファに読み込みます。

チャネルから最大 r バイトを読み取ろうとします。r は、このメソッドを呼び出すときにバッファ内に存在するバイト数、dst.remaining() になります。

長さ n (0 <= n <= r) のバイトシーケンスが読み取られるとします。このバイトシーケンスがバッファに転送されるため、シーケンス内の最初のバイトのインデックスは p、最後のバイトのインデックスは p + n - 1 になります。なお、p は、このメソッドを呼び出すときのバッファの位置です。バッファの位置は、返されるとき p + n に等しくなります。リミットに変化はありません。

読み込み操作によってバッファがいっぱいになるとはかぎりません。バイトが一切読み取られない場合もあります。バッファがいっぱいになるかどうかは、チャネルの本来の性質と状態によって決定します。たとえば非ブロックモードのソケットは、ソケットの入力バッファからただちに取得できるバイト以外を読み取ることができません。同様に、ファイルチャネルは、ファイル内のバイト以外を読み取ることができません。ただし、チャネルがブロックモードであり、バッファ内のバイト数が 1 バイト以上の場合、1 バイト以上が読み取られるまでこのメソッドはブロックされることになっています。

このメソッドはいつでも呼び出せます。ただし、その他のスレッドがこのチャネルに対して読み込み操作を開始している場合、このメソッドの呼び出しは最初の操作が終わるまでブロックされます。

パラメータ:
dst - バイトの転送先バッファ
戻り値:
読み込まれた文字数。ゼロか、チャネルがストリームの終わりに達している場合は -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.