|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface ReadableByteChannel
バイトを読み取ることができるチャネルです。
読み込み可能なチャネル上で、並行して複数の読み込み操作を実行することはできません。チャネル上で読み込み操作を開始したスレッドがある場合、新たな読み込み操作を開始しようとする別のスレッドは、最初の操作が完了するまでブロックされます。読み込み操作とその他の入出力操作を同時並行で実行できるかどうかは、チャネルの種類によって決まります。
| メソッドの概要 | |
|---|---|
int |
read(ByteBuffer dst)
このチャネルのバイトシーケンスを指定のバッファーに読み込みます。 |
| インタフェース java.nio.channels.Channel から継承されたメソッド |
|---|
close, isOpen |
| メソッドの詳細 |
|---|
int read(ByteBuffer dst)
throws IOException
チャネルから最大 r バイトを読み取ろうとします。r は、このメソッドを呼び出すときにバッファー内に存在するバイト数、dst.remaining() になります。
長さ n (0 <= n <= r) のバイトシーケンスが読み取られるとします。このバイトシーケンスがバッファーに転送されるため、シーケンス内の最初のバイトのインデックスは p、最後のバイトのインデックスは p + n - 1 になります。なお、p は、このメソッドを呼び出すときのバッファーの位置です。バッファーの位置は、返されるとき p + n に等しくなります。リミットに変化はありません。
読み込み操作によってバッファーがいっぱいになるとはかぎりません。バイトが一切読み取られない場合もあります。バッファーがいっぱいになるかどうかは、チャネルの本来の性質と状態によって決定します。たとえば非ブロックモードのソケットは、ソケットの入力バッファーからただちに取得できるバイト以外を読み取ることができません。同様に、ファイルチャネルは、ファイル内のバイト以外を読み取ることができません。ただし、チャネルがブロックモードであり、バッファー内のバイト数が 1 バイト以上の場合、1 バイト以上が読み取られるまでこのメソッドはブロックされることになっています。
このメソッドはいつでも呼び出すことができます。ただし、ほかのスレッドがこのチャネルに対して読み込み操作を開始している場合、このメソッドの呼び出しは最初の操作が終わるまでブロックされます。
dst - バイトの転送先バッファー
NonReadableChannelException - このチャネルが読み込み可能でない場合
ClosedChannelException - このチャネルがクローズしている場合
AsynchronousCloseException - 読み込み操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合
ClosedByInterruptException - 読み込み操作の進行中に、別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込み状態が設定された場合
IOException - その他の入出力エラーが発生した場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。