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)
このチャネルのバイトシーケンスを指定のバッファーから書き出します。
|
int read(ByteBuffer dst) throws IOException
バイトの読み取りは、このチャネルの現在の位置から開始されます。その後、実際に読み取られたバイト数により位置が更新されます。それ以外の場合は、このメソッドは ReadableByteChannel
インタフェースの指定どおりに動作します。
read
、インタフェース: ReadableByteChannel
dst
- バイトの転送先バッファーClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 読み取り操作の進行中に、別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 読み取り操作の進行中に、別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合int write(ByteBuffer src) throws IOException
チャネルが、APPEND
オプションを指定して開いたファイルなどのエンティティーに接続されている場合を除き、バイトの書き込みは、このチャネルの現在の位置から開始されます。このオプションを使用する場合、位置は最初にファイルの末尾まで進みます。チャネルが接続されているエンティティーのサイズは、書き込まれたバイト数に合わせ、必要であれば大きくなります。位置は、実際に書き込まれたバイト数によって更新されます。それ以外の場合は、このメソッドは WritableByteChannel
インタフェースの指定どおりに動作します。
write
、インタフェース: WritableByteChannel
src
- バイトの取得先バッファーClosedChannelException
- このチャネルがクローズしている場合AsynchronousCloseException
- 書き込み操作の進行中に別のスレッドによってこのチャネルがクローズされた場合ClosedByInterruptException
- 書き込み中に別のスレッドからの割り込みがあったためにチャネルがクローズし、現在のスレッドの割り込みステータスが設定された場合IOException
- その他の入出力エラーが発生した場合long position() throws IOException
ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SeekableByteChannel position(long newPosition) throws IOException
位置の値を現在のサイズより大きい値に設定するのは正当な処理ですが、この処理によってエンティティーのサイズが変更されるわけではありません。ファイルの現在のサイズより大きい値が設定されている位置でバイトを読み取ろうとすると、即座にファイルの終わりが通知されます。そのような位置であとでバイトを書き込もうとすると、新しいバイトに合わせてエンティティーのサイズが大きくなります。以前のファイルの終わりから新しく書き込まれたバイトまでの間に存在するバイトの値は未指定です。
APPEND
オプションを指定して開いたエンティティー (通常はファイル) に接続されているときに、チャネルの位置を設定することはお勧めできません。追加可能なときは、位置は最初に末尾まで進んでから、書き込みが行われます。
newPosition
- 新しい位置。エンティティーの先頭からのバイト数を示す負でない整数ClosedChannelException
- このチャネルがクローズしている場合IllegalArgumentException
- 新しい位置が負の値の場合IOException
- その他の入出力エラーが発生した場合long size() throws IOException
ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合SeekableByteChannel truncate(long size) throws IOException
指定されたサイズが現在のサイズよりも小さい場合、エンティティーの末尾が切り詰められ、新しい終わりに収まらないバイトが破棄されます。指定されたサイズが現在のサイズ以上の場合、エンティティーは変更されません。どちらの場合も、現在の位置が指定されたサイズよりも大きい場合、そのサイズに合わせて位置が設定されます。
APPEND
オプションを指定して開いたエンティティー (通常はファイル) に接続されているとき、このインタフェースの実装では切り詰めが禁止されている場合があります。
size
- 新しいサイズ。負ではないバイト数NonWritableChannelException
- このチャネルが書き込み可能でない場合ClosedChannelException
- このチャネルがクローズしている場合IllegalArgumentException
- 新しいサイズが負の値の場合IOException
- その他の入出力エラーが発生した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.