public abstract class AsynchronousFileChannel extends Object implements AsynchronousChannel
このクラスによって定義された open
メソッドの 1 つを呼び出すことでファイルを開くと、非同期ファイルチャネルが作成されます。ファイルには、読み込み/書き込みと現在のサイズの照会
が可能な可変長のバイトシーケンスが含まれています。ファイルのサイズは、現在のサイズを上回るバイト数が書き込まれると大きくなり、切り捨て
によって小さくなります。
非同期ファイルチャネルには、ファイル内の現在位置がありません。代わりに、非同期操作を開始するそれぞれの読み取りメソッドと書き込みメソッドに対するファイル位置が指定されます。CompletionHandler
はパラメータとして指定され、入出力操作の結果を消費するために呼び出されます。このクラスは、非同期操作を開始する読み取りメソッドと書き込みメソッドも定義し、操作の保留されている結果を表す Future
を返します。操作が完了したかどうかを確認し、操作の完了を待機し、結果を取得するために Future
が使用することができます。
このクラスは、読み取り操作と書き込み操作に加えて、次の操作を定義します。
ファイルの更新は、基礎となっている記憶装置に forced out
されます。したがって、システムがクラッシュしてもデータの損失は回避されます。
ファイルの領域は、その他のプログラムからアクセスできないようにロック
されます。
AsynchronousFileChannel
は、入出力イベントを処理して、チャネルで入出力操作の結果を消費する終了ハンドラにディスパッチするために、タスクの送信先のスレッドプールに関連付けられます。チャネルで開始された入出力操作の終了ハンドラは、スレッドプール内のいずれかのスレッドによって呼び出されることが保証されます (これによって、終了ハンドラは必ず、予期される ID を持つスレッドによって実行されます)。入出力操作がただちに終了し、開始スレッド自体がスレッドプール内の 1 つのスレッドである場合、終了ハンドラは開始スレッドによって直接呼び出されることがあります。スレッドプールを指定せずに AsynchronousFileChannel
が作成される場合、チャネルは、ほかのチャネルと共有される可能性がある、システムに依存するデフォルトのスレッドプールに関連付けられます。デフォルトのスレッドプールは、AsynchronousChannelGroup
クラスで定義されたシステムプロパティーによって構成されます。
この型のチャネルは、複数のスレッドで並行して使用できます。close
メソッドは、Channel
インタフェースの指定どおりにいつでも呼び出せます。これによって、チャネルで未処理の非同期操作はすべて、例外 AsynchronousCloseException
をスローして完了します。複数の読み取り操作と書き込み操作が同時に未処理になることがあります。複数の読み取り操作と書き込み操作が未処理のときは、入出力操作の順序、および終了ハンドラが呼び出される順序は指定されません。特に、操作が開始された順序で実行されるとはかぎりません。読み取りまたは書き込み時に使用される ByteBuffers
は、複数の入出力操作で並行して使用することはできません。さらに、入出力操作の開始後は、操作の完了後までバッファーへのアクセスが行われないよう注意してください。
FileChannel
と同様に、このクラスのインスタンスによって提供されるファイルのビューは、同じプログラム内のその他のインスタンスによって提供される同じファイルのほかのビューと矛盾しないことが保証されています。しかし、基礎となるオペレーティングシステムのキャッシュ処理や、ネットワークファイルシステムプロトコルによる遅延が原因で、このクラスのインスタンスによって提供されたビューと、並行して実行されているプログラムで認識されるその他のビューが矛盾する可能性がないわけではありません。この問題は、これらのプログラムを記述している言語の違いや、これらが同一マシンで実行されているかどうかとは関係なく発生します。こうした矛盾は、システムによって生じるものであるため未指定です。
修飾子 | コンストラクタと説明 |
---|---|
protected |
AsynchronousFileChannel()
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract void |
force(boolean metaData)
このチャネルのファイルの更新内容は、その記憶装置に強制的に書き込まれます。
|
Future<FileLock> |
lock()
このチャネルのファイル上に排他ロックを設定します。
|
<A> void |
lock(A attachment, CompletionHandler<FileLock,? super A> handler)
このチャネルのファイル上に排他ロックを設定します。
|
abstract Future<FileLock> |
lock(long position, long size, boolean shared)
このチャネルのファイルの指定された領域をロックします。
|
abstract <A> void |
lock(long position, long size, boolean shared, A attachment, CompletionHandler<FileLock,? super A> handler)
このチャネルのファイルの指定された領域をロックします。
|
static AsynchronousFileChannel |
open(Path file, OpenOption... options)
読み込みまたは書き込み (あるいはその両方) 用のファイルを開くか作成し、そのファイルにアクセスするための非同期のファイルチャネルを返します。
|
static AsynchronousFileChannel |
open(Path file, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs)
読み込みまたは書き込み (あるいはその両方) 用のファイルを開くか作成し、そのファイルにアクセスするための非同期のファイルチャネルを返します。
|
abstract Future<Integer> |
read(ByteBuffer dst, long position)
このチャネルのバイトシーケンスを、指定されたファイル位置からバッファーに読み込みます。
|
abstract <A> void |
read(ByteBuffer dst, long position, A attachment, CompletionHandler<Integer,? super A> handler)
このチャネルのバイトシーケンスを、指定されたファイル位置からバッファーに読み込みます。
|
abstract long |
size()
このチャネルのファイルの現在のサイズを返します。
|
abstract AsynchronousFileChannel |
truncate(long size)
このチャネルのファイルの末尾を切り詰め、指定されたサイズにします。
|
FileLock |
tryLock()
このチャネルのファイル上で排他ロックを獲得しようとします。
|
abstract FileLock |
tryLock(long position, long size, boolean shared)
このチャネルのファイルの指定された領域でロックを獲得しようとします。
|
abstract Future<Integer> |
write(ByteBuffer src, long position)
指定されたバッファーのバイトシーケンスをこのチャネルの指定されたファイル位置に書き込みます。
|
abstract <A> void |
write(ByteBuffer src, long position, A attachment, CompletionHandler<Integer,? super A> handler)
指定されたバッファーのバイトシーケンスをこのチャネルの指定されたファイル位置に書き込みます。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
close
public static AsynchronousFileChannel open(Path file, Set<? extends OpenOption> options, ExecutorService executor, FileAttribute<?>... attrs) throws IOException
options
パラメータはファイルを開く方法を決定します。READ
オプションと WRITE
オプションにより、ファイルが読み取りであるか書き込み可能であるかが決定されます。いずれのオプションも配列に含まれていない場合、既存のファイルは読み取り可能です。
READ
および WRITE
以外に、次のオプションが存在する場合があります。
オプション | 説明 |
---|---|
TRUNCATE_EXISTING |
既存のファイルを開くと、ファイルは最初にサイズが 0 バイトに切り詰められます。このオプションは、ファイルを読み取り専用に開いた場合は無視されます。 |
CREATE_NEW |
このオプションがある場合、新しい空のファイルが作成され、ファイルがすでに存在する場合は失敗します。ファイルの作成時に、ファイルがあるかどうかのチェックや、ない場合のファイルの生成は、ほかのファイルシステムの操作に対して原子的です。このオプションは、ファイルを読み取り専用に開いた場合は無視されます。 |
CREATE |
このオプションが存在する場合は、既存のファイルが存在する場合はそれが開かれ、そうでない場合は新しいファイルが作成されます。ファイルの作成時に、ファイルがあるかどうかのチェックや、ない場合のファイルの生成は、ほかのファイルシステムの操作に対して原子的です。このオプションは、CREATE_NEW オプションも存在する場合またはファイルを読み取り専用に開いた場合は無視されます。 |
DELETE_ON_CLOSE |
このオプションがある場合、実装はファイルが close メソッドによって閉じられるときに、ベストエフォートでファイルを削除しようとします。close メソッドが呼び出された場合、Java 仮想マシンの終了時にファイルを削除するためのベストエフォートの試みが行われます。 |
SPARSE |
新しいファイルの作成時に、このオプションは新しいファイルがスパースであることのヒントになります。このオプションは、新しいファイルを作成しない場合は無視されます。 |
SYNC |
ファイルの内容またはメタデータの更新は、基本となる記憶装置に同期的に書き込まれることを必要とします。(「同期入出力ファイル整合性」を参照)。 |
DSYNC |
ファイルの内容の更新は、基本となる記憶装置に同期的に書き込まれることを必要とします。(「同期入出力ファイル整合性」を参照)。 |
実装は、追加のオプションをサポートする場合もあります。
executor
パラメータは、入出力イベントを処理して、結果のチャネルで開始された操作の終了結果をディスパッチするために、タスクの送信先となる ExecutorService
です。これらのタスクの性質は実装に大きく依存するため、Executor
の構成時には注意してください。最小限アンバウンド形式のワークキューをサポートするはずであり、execute
メソッドの呼び出し側スレッドでタスクを実行することはありません。チャネルが開いている間に executor サービスをシャットダウンした場合の動作は保証されていません。
attrs
パラメータは、ファイルの作成時に原子的に設定される、ファイル file-attributes
のオプションの配列です。
新しいチャネルは、Path
を作成したプロバイダ上で newFileChannel
メソッドを呼び出すことによって作成されます。
file
- 開くまたは作成するファイルのパスoptions
- ファイルを開く方法を指定するオプションexecutor
- スレッドプール、またはチャネルをデフォルトのスレッドプールに関連付ける場合は null
attrs
- ファイルの作成時に原子的に設定されるファイル属性のオプションのリストIllegalArgumentException
- セットにオプションの無効な組み合わせが含まれる場合UnsupportedOperationException
- file
が、非同期ファイルチャネルの作成をサポートしないプロバイダに関連付けられている場合、未サポートのオープンオプションが指定された場合、またはファイルの作成時に原子的に設定できない属性が配列に含まれる場合IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーがインストールされ、それが実装によって必要とされる未指定のアクセス権を拒否する場合。デフォルトプロバイダで、ファイルが読み取り用に開かれた場合は、SecurityManager.checkRead(String)
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。ファイルが書き込み用に開かれた場合は、SecurityManager.checkWrite(String)
メソッドが呼び出されて書き込みアクセスがチェックされます。public static AsynchronousFileChannel open(Path file, OpenOption... options) throws IOException
このメソッド呼び出しの動作は、次の呼び出しの動作とまったく同一です。
ch.open
(file, opts, null, new FileAttribute<?>[0]);
ここで、opts
は、このメソッドに対して指定されたオプションが含まれる Set
です。
結果のチャネルは、入出力イベントを処理して、結果のチャネルで実行される非同期操作の結果を消費する終了ハンドラにディスパッチするために、タスクの送信先であるデフォルトのスレッドプールに関連付けられます。
file
- 開くまたは作成するファイルのパスoptions
- ファイルを開く方法を指定するオプションIllegalArgumentException
- セットにオプションの無効な組み合わせが含まれる場合UnsupportedOperationException
- file
がファイルチャネルの作成をサポートしないプロバイダに関連付けられている場合、または未サポートのオープンオプションが指定された場合IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティーマネージャーがインストールされ、それが実装によって必要とされる未指定のアクセス権を拒否する場合。デフォルトプロバイダで、ファイルが読み取り用に開かれた場合は、SecurityManager.checkRead(String)
メソッドが呼び出されてファイルへの読み取りアクセスがチェックされます。ファイルが書き込み用に開かれた場合は、SecurityManager.checkWrite(String)
メソッドが呼び出されて書き込みアクセスがチェックされます。public abstract long size() throws IOException
ClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合public abstract AsynchronousFileChannel truncate(long size) throws IOException
指定されたサイズが現在のファイルサイズよりも小さい場合、ファイルの末尾が切り詰められ、新しいファイルの終わりに収まらないバイトが破棄されます。指定されたサイズが現在のファイルサイズと同じか、それよりも大きい場合、ファイルサイズは変更されません。
size
- 新しいサイズ。負ではないバイト数NonWritableChannelException
- このチャネルが書き込み可能でない場合ClosedChannelException
- このチャネルがクローズしている場合IllegalArgumentException
- 新しいサイズが負の値の場合IOException
- その他の入出力エラーが発生した場合public abstract void force(boolean metaData) throws IOException
このチャネルのファイルがローカルの記憶装置上にある場合、このメソッドの戻り値から、このチャネルの作成時またはこのメソッドの一番最近の呼び出し以降のファイルの変更内容がすべてそのデバイスに書き込まれていることがわかります。この方法により、システムがクラッシュしたとき、重要な情報を損失から保護できます。
一方、ファイルがローカルの記憶装置上にない場合、書き込みは行われません。
metaData
パラメータを使って、このメソッドで実行しなければならない入出力操作の数を制限できます。このパラメータに false
を渡した場合、ストレージに書き込む必要があるのは、ファイルのコンテンツの更新内容だけです。true
を渡した場合は、ファイルのコンテンツとメタデータの両方の更新内容を書き込む必要があります。これには、通常 1 個以上の入出力操作が必要です。このパラメータに実効性があるかどうかは、基礎となるオペレーティングシステムによって決まるため、未指定です。
このメソッドを呼び出すと、チャネルが読み込み専用であっても入出力操作が発生します。たとえば、ファイルのメタデータとして最終アクセス時刻を保存し、ファイルの読み込みのたびに更新するようなオペレーティングシステムもあります。この処理が実際に行われるかどうかはシステムによって決まるため、未指定です。
このメソッドは、このクラスに定義されたメソッドによってこのチャネルのファイルに加えられた変更を強制するだけです。
metaData
- true
の場合、このメソッドは、ファイルのコンテンツおよびメタデータの両方に対する変更をストレージに強制的に書き込む必要がある。それ以外の場合はコンテンツの変更のみを強制的に書き込む必要があるClosedChannelException
- このチャネルがクローズしている場合IOException
- その他の入出力エラーが発生した場合public abstract <A> void lock(long position, long size, boolean shared, A attachment, CompletionHandler<FileLock,? super A> handler)
このメソッドは、このチャネルのファイルの指定された領域でロックを獲得するための操作を開始します。handler
パラメータは、ロックが獲得された (または操作が失敗した) ときに呼び出される終了ハンドラです。終了ハンドラに渡される結果は、結果の FileLock
です。
position
パラメータと size
パラメータで指定された領域が、実際の基礎となるファイルに含まれていたり、そのファイルとオーバーラップしたりしている必要はありません。ロック領域のサイズは固定です。初期状態ではファイルの終わりがロック領域内に含まれていても、ファイルサイズがこの領域より大きくなってしまった場合、新しい部分にはロックが適用されません。ファイル全体にロックを適用する必要があるにもかかわらず、ファイルサイズが大きくなる可能性がある場合は、ゼロから予測される最大ファイルサイズ以上までの領域をロックします。引数が 2 つの lock(Object,CompletionHandler)
メソッドは、単純にサイズ Long.MAX_VALUE
の領域をロックします。要求された領域をオーバーラップするロックがこの Java 仮想マシンにすでに確保されている場合、またはオーバーラップした領域をロックするためにこのメソッドが呼び出され、その操作が完了していない場合、このメソッドは OverlappingFileLockException
をスローします。
一部のオペレーティングシステムでは、非同期の方法でファイルロックを獲得するメカニズムはサポートされません。その結果、実装は、バックグラウンドスレッドで、または関連するスレッドプール内のスレッドによって実行されたタスクからファイルロックを獲得することがあります。未処理のロック操作が多数がある場合、無期限に Java 仮想マシンでスレッドが消費される可能性があります。
共有ロックをサポートしないオペレーティングシステムでは、共有ロック要求が排他ロック要求に自動的に変換されます。新しく獲得したロックが共有ロックであるか排他ロックであるかは、結果として得られるロックオブジェクトの isShared
メソッドを呼び出すことで判断できます。
ファイルロックは Java 仮想マシン全体のために保持されます。これらは、同一仮想マシン内の複数スレッドによるファイルへのアクセスを制御するのには適していません。
position
- ロック領域が開始されるファイル位置。負でない値である必要がありますsize
- ロック領域のサイズ。負でない値である必要があります。position
+ size
も負でない値である必要がありますshared
- 共有ロックを要求する場合は true
。この場合、このチャネルは読み取りが (場合によっては書き込みも) 可能である必要があります。排他ロックを要求する場合は false
。この場合、このチャネルは書き込みが (場合によっては読み取りも) 可能である必要がありますattachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラOverlappingFileLockException
- 要求された領域をオーバーラップするロックがこの Java 仮想マシンによってすでに確保されている場合、またはオーバーラップする領域をロックしようとしているけれどもまだ保留されている場合IllegalArgumentException
- 上記のパラメータの前提条件が満たされていない場合NonReadableChannelException
- shared
が true であるがこのチャネルが読み取り不可であった場合NonWritableChannelException
- shared
が false であるがこのチャネルが書き込み不可であった場合public final <A> void lock(A attachment, CompletionHandler<FileLock,? super A> handler)
このメソッドは、このチャネルのファイルの指定された領域でロックを獲得するための操作を開始します。handler
パラメータは、ロックが獲得された (または操作が失敗した) ときに呼び出される終了ハンドラです。終了ハンドラに渡される結果は、結果の FileLock
です。
このメソッドを ch.lock(att,handler)
の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。
ch.lock
(0L, Long.MAX_VALUE, false, att, handler)
attachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラOverlappingFileLockException
- この Java 仮想マシンによってロックがすでに確保されている場合、または領域をロックしようとしているけれどもまだ保留されている場合NonWritableChannelException
- このチャネルが書き込み可能でない場合public abstract Future<FileLock> lock(long position, long size, boolean shared)
このメソッドは、このチャネルのファイルの指定された領域でロックを獲得するための操作を開始します。このメソッドは、lock(long, long, boolean, Object, CompletionHandler)
メソッドとまったく同じように動作します。ただし、終了ハンドラを指定する代わりに、このメソッドは保留状態の結果を表す Future
を返します。Future
の get
メソッドは、正常に完了すると FileLock
を返します。
position
- ロック領域が開始されるファイル位置。負でない値である必要がありますsize
- ロック領域のサイズ。負でない値である必要があります。position
+ size
も負でない値である必要がありますshared
- 共有ロックを要求する場合は true
。この場合、このチャネルは読み取りが (場合によっては書き込みも) 可能である必要があります。排他ロックを要求する場合は false
。この場合、このチャネルは書き込みが (場合によっては読み取りも) 可能である必要がありますFuture
オブジェクトOverlappingFileLockException
- この Java 仮想マシンによってロックがすでに確保されている場合、または領域をロックしようとしているけれどもまだ保留されている場合IllegalArgumentException
- 上記のパラメータの前提条件が満たされていない場合NonReadableChannelException
- shared
が true であるがこのチャネルが読み取り不可であった場合NonWritableChannelException
- shared
が false であるがこのチャネルが書き込み不可であった場合public final Future<FileLock> lock()
このメソッドは、このチャネルのファイル上で排他ロックを獲得する操作を開始します。メソッドは、操作の保留されている結果を表す Future
を返します。Future
の get
メソッドは、正常に完了すると FileLock
を返します。
このメソッド呼び出しの動作は、次の呼び出しの動作とまったく同一です。
ch.lock
(0L, Long.MAX_VALUE, false)
Future
オブジェクトOverlappingFileLockException
- この Java 仮想マシンによってロックがすでに確保されている場合、または領域をロックしようとしているけれどもまだ保留されている場合NonWritableChannelException
- このチャネルが書き込み可能でない場合public abstract FileLock tryLock(long position, long size, boolean shared) throws IOException
このメソッドはブロックされません。このメソッドを呼び出すと、要求された領域でロックを獲得したか、ロックの獲得に失敗したかを示す結果がただちに返されます。オーバーラップしたロックが別のプログラムによって保持されていたためロックの獲得に失敗した場合、null
が返されます。その他の原因でロックに失敗した場合は、適切な例外がスローされます。
position
- ロック領域が開始されるファイル位置。負でない値である必要がありますsize
- ロック領域のサイズ。負でない値である必要があります。position
+ size
も負でない値である必要がありますshared
- 共有ロックを要求する場合は true
、排他ロックを要求する場合は false
null
IllegalArgumentException
- 上記のパラメータの前提条件が満たされていない場合ClosedChannelException
- このチャネルがクローズしている場合OverlappingFileLockException
- 要求された領域をオーバーラップするロックがこの Java 仮想マシンにすでに確保されている場合。または、このメソッド内でブロックされている別のスレッドが同じファイルのオーバーラップした領域をロックしようとしている場合NonReadableChannelException
- shared
が true であるがこのチャネルが読み取り不可であった場合NonWritableChannelException
- shared
が false であるがこのチャネルが書き込み不可であった場合IOException
- その他の入出力エラーが発生した場合lock(Object,CompletionHandler)
, lock(long,long,boolean,Object,CompletionHandler)
, tryLock()
public final FileLock tryLock() throws IOException
このメソッドを ch.tryLock()
の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。
ch.tryLock
(0L, Long.MAX_VALUE, false)
null
ClosedChannelException
- このチャネルがクローズしている場合OverlappingFileLockException
- 要求された領域をオーバーラップするロックがこの Java 仮想マシンにすでに確保されている場合。または、このメソッド内でブロックされている別のスレッドがオーバーラップした領域をロックしようとしている場合NonWritableChannelException
- shared
が false であるがこのチャネルが書き込み不可であった場合IOException
- その他の入出力エラーが発生した場合lock(Object,CompletionHandler)
, lock(long,long,boolean,Object,CompletionHandler)
, tryLock(long,long,boolean)
public abstract <A> void read(ByteBuffer dst, long position, A attachment, CompletionHandler<Integer,? super A> handler)
このメソッドは、このチャネルのバイトシーケンスの、指定されたファイル位置から指定されたバッファーへの読み取りを開始します。読み取りの結果は、読み取られるバイト数であるか、または読み取ろうとした時点で、指定された位置がファイルのサイズ以上である場合は -1
です。
このメソッドは、バイトが指定されたファイル位置から読み取られるという点を除けば、AsynchronousByteChannel.read(ByteBuffer,Object,CompletionHandler)
メソッドと同じです。読み取ろうとした時点で、指定されたファイル位置がファイルのサイズより大きい場合、バイトは読み取られません。
dst
- バイトの転送先バッファーposition
- 転送が開始されるファイル位置。負でない値である必要がありますattachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラIllegalArgumentException
- position が負であるか、またはバッファーが読み取り専用の場合NonReadableChannelException
- このチャネルが読み取り可能でない場合public abstract Future<Integer> read(ByteBuffer dst, long position)
このメソッドは、このチャネルのバイトシーケンスの、指定されたファイル位置から指定されたバッファーへの読み取りを開始します。このメソッドは、操作の保留されている結果を表す Future
を返します。Future
の get
メソッドは、読み取られるバイト数であるか、または読み取ろうとした時点で、指定された位置がファイルのサイズ以上である場合は -1
です。
このメソッドは、バイトが指定されたファイル位置から読み取られるという点を除けば、AsynchronousByteChannel.read(ByteBuffer)
メソッドと同じです。読み取ろうとした時点で、指定されたファイル位置がファイルのサイズより大きい場合、バイトは読み取られません。
dst
- バイトの転送先バッファーposition
- 転送が開始されるファイル位置。負でない値である必要がありますFuture
オブジェクトIllegalArgumentException
- position が負であるか、またはバッファーが読み取り専用の場合NonReadableChannelException
- このチャネルが読み取り可能でない場合public abstract <A> void write(ByteBuffer src, long position, A attachment, CompletionHandler<Integer,? super A> handler)
このメソッドは、バイトが指定されたファイル位置に書き込まれるという点を除けば、AsynchronousByteChannel.write(ByteBuffer,Object,CompletionHandler)
メソッドと同じです。書き込もうとした時点で、指定された位置がファイルのサイズより大きい場合、ファイルは新しいバイトに合わせて大きくなります。以前のファイルの終わりと新しく書き込まれたバイトの間のバイトの値は未指定です。
src
- バイトの転送元バッファーposition
- 転送が開始されるファイル位置。負でない値である必要がありますattachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 結果を消費するためのハンドラIllegalArgumentException
- 位置が負の値の場合NonWritableChannelException
- このチャネルが書き込み可能でない場合public abstract Future<Integer> write(ByteBuffer src, long position)
このメソッドは、バイトシーケンスの、指定されたファイル位置の指定のバッファーからこのチャネルへの書き込みを開始します。メソッドは、書き込み操作の保留されている結果を表す Future
を返します。Future
の get
メソッドは書き込まれたバイト数を返します。
このメソッドは、バイトが指定されたファイル位置に書き込まれるという点を除けば、AsynchronousByteChannel.write(ByteBuffer)
メソッドと同じです。書き込もうとした時点で、指定された位置がファイルのサイズより大きい場合、ファイルは新しいバイトに合わせて大きくなります。以前のファイルの終わりと新しく書き込まれたバイトの間のバイトの値は未指定です。
src
- バイトの転送元バッファーposition
- 転送が開始されるファイル位置。負でない値である必要がありますFuture
オブジェクトIllegalArgumentException
- 位置が負の値の場合NonWritableChannelException
- このチャネルが書き込み可能でない場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.