-
- すべてのスーパー・インタフェース:
AutoCloseable
,ByteChannel
,Channel
,Closeable
,ReadableByteChannel
,WritableByteChannel
- 既知のすべての実装クラス:
FileChannel
public interface SeekableByteChannel extends ByteChannel
現在の位置を保持し、位置の変更を許可するバイト・チャネル。シーク可能なバイト・チャネルは、読み取りおよび書込みが可能な可変長のバイト・シーケンスが含まれているエンティティ(通常はファイル)に接続されます。 現在の位置を
照会
および変更
することができます。 チャネルは、チャネルが接続されているエンティティの現在のサイズにアクセスできるようにします。 サイズは、現在のサイズを上回るバイト数が書き込まれると大きくなり、切り捨て
によって小さくなります。position
メソッドとtruncate
メソッドのうち戻り値を返さないものは、自身を呼び出したチャネルを返します。 これを応用して、メソッド呼出しを連鎖させることができます。 このインタフェースの実装は、この実装クラスのメソッド呼出しを連鎖できるように、戻り型を特殊化することをお薦めします。
-
-
メソッドのサマリー
修飾子と型 メソッド 説明 long
position()
このチャネルの位置を返します。SeekableByteChannel
position(long newPosition)
このチャネルの位置を設定します。int
read(ByteBuffer dst)
このチャネルのバイト・シーケンスを指定のバッファに読み込みます。long
size()
このチャネルの接続先のエンティティの現在のサイズを返します。SeekableByteChannel
truncate(long size)
このチャネルの接続先のエンティティの末尾を切詰め、指定されたサイズにします。int
write(ByteBuffer src)
このチャネルのバイト・シーケンスを指定のバッファから書き出します。
-
-
-
メソッドの詳細
-
read
int read(ByteBuffer dst) throws IOException
このチャネルのバイト・シーケンスを指定のバッファに読み込みます。バイトの読取りは、このチャネルの現在の位置から開始されます。その後、実際に読み取られたバイト数により位置が更新されます。 それ以外の場合は、このメソッドは
ReadableByteChannel
インタフェースの指定どおりに動作します。- 定義:
read
、インタフェース:ReadableByteChannel
- パラメータ:
dst
- バイトの転送先バッファ- 戻り値:
- 読み取られたバイト数。ゼロの場合もある。チャネルがストリームの終わりに達した場合は
-1
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読取り操作の進行中に、別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
write
int write(ByteBuffer src) throws IOException
このチャネルのバイト・シーケンスを指定のバッファから書き出します。チャネルが、
APPEND
オプションを指定して開いたファイルなどのエンティティに接続されている場合を除き、バイトの書込みは、このチャネルの現在の位置から開始されます。このオプションを使用する場合、位置は最初にファイルの末尾まで進みます。 チャネルが接続されているエンティティのサイズは、書き込まれたバイト数に合わせ、必要であれば大きくなります。位置は、実際に書き込まれたバイト数によって更新されます。 それ以外の場合は、このメソッドはWritableByteChannel
インタフェースの指定どおりに動作します。- 定義:
write
、インタフェース:WritableByteChannel
- パラメータ:
src
- バイトの取得先バッファ- 戻り値:
- 書き込まれるバイト数。ゼロの場合もある
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書込み中に別のスレッドからの割込みがあったためにチャネルがクローズし、現在のスレッドの割込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合
-
position
long position() throws IOException
このチャネルの位置を返します。- 戻り値:
- このチャネルの位置。エンティティの先頭から現在の位置までのバイト数を示す負でない整数
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合
-
position
SeekableByteChannel position(long newPosition) throws IOException
このチャネルの位置を設定します。位置の値を現在のサイズより大きい値に設定するのは正当な処理ですが、この処理によってエンティティのサイズが変更されるわけではありません。 ファイルの現在のサイズより大きい値が設定されている位置でバイトを読み取ろうとすると、即座にファイルの終わりが通知されます。 そのような位置であとでバイトを書き込もうとすると、新しいバイトに合わせてエンティティのサイズが大きくなります。以前のファイルの終わりから新しく書き込まれたバイトまでの間に存在するバイトの値は未指定です。
APPEND
オプションを指定して開いたエンティティ(通常はファイル)に接続されているときに、チャネルの位置を設定することはお薦めできません。 追加可能なときは、位置は最初に末尾まで進んでから、書込みが行われます。- パラメータ:
newPosition
- 新しい位置。エンティティの先頭からのバイト数を示す負でない整数- 戻り値:
- このチャネル
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合IllegalArgumentException
- 新しい位置が負の値の場合IOException
- その他の入出力エラーが発生した場合
-
size
long size() throws IOException
このチャネルの接続先のエンティティの現在のサイズを返します。- 戻り値:
- 現在のサイズ(バイト単位)
- 例外:
ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合
-
truncate
SeekableByteChannel truncate(long size) throws IOException
このチャネルの接続先のエンティティの末尾を切詰め、指定されたサイズにします。指定されたサイズが現在のサイズよりも小さい場合、エンティティの末尾が切り詰められ、新しい終わりに収まらないバイトが破棄されます。 指定されたサイズが現在のサイズ以上の場合、エンティティは変更されません。 どちらの場合も、現在の位置が指定されたサイズよりも大きい場合、そのサイズに合わせて位置が設定されます。
APPEND
オプションを指定して開いたエンティティ(通常はファイル)に接続されているとき、このインタフェースの実装では切詰めが禁止されている場合があります。- パラメータ:
size
- 新しいサイズ。負ではないバイト数- 戻り値:
- このチャネル
- 例外:
NonWritableChannelException
- このチャネルが書込み可能でない場合ClosedChannelException
- このチャネルがクローズしている場合IllegalArgumentException
- 新しいサイズが負の値の場合IOException
- その他の入出力エラーが発生した場合
-
-