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仮想マシン全体のために保持されます。これらは、同一仮想マシン内の複数スレッドによるファイルへのアクセスを制御するのには適していません。
A
- 接続のタイプ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)
A
- 接続のタイプ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)
メソッドと同じです。読み取ろうとした時点で、指定されたファイル位置がファイルのサイズより大きい場合、バイトは読み取られません。
A
- 接続のタイプ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)
メソッドと同じです。書き込もうとした時点で、指定された位置がファイルのサイズより大きい場合、ファイルは新しいバイトに合わせて大きくなります。以前のファイルの終わりと新しく書き込まれたバイトの間のバイトの値は未指定です。
A
- 接続のタイプ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, 2014, Oracle and/or its affiliates. All rights reserved.