モジュール java.base
パッケージ java.nio.channels

クラスAsynchronousFileChannel

java.lang.Object
java.nio.channels.AsynchronousFileChannel
すべての実装されたインタフェース:
Closeable, AutoCloseable, AsynchronousChannel, Channel

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と同様に、このクラスのインスタンスによって提供されるファイルのビューは、同じプログラム内のその他のインスタンスによって提供される同じファイルのほかのビューと矛盾しないことが保証されています。 しかし、基礎となるオペレーティング・システムのキャッシュ処理や、ネットワーク・ファイル・システム・プロトコルによる遅延が原因で、このクラスのインスタンスによって提供されたビューと、並行して実行されているプログラムで認識されるその他のビューが矛盾する可能性がないわけではありません。 この問題は、これらのプログラムを記述している言語の違いや、これらが同一マシンで実行されているかどうかとは関係なく発生します。 こうした矛盾は、システムによって生じるものであるため未指定です。

導入されたバージョン:
1.7
  • コンストラクタのサマリー

    コンストラクタ
    修飾子 コンストラクタ 説明
    protected AsynchronousFileChannel()
    このクラスの新しいインスタンスを初期化します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    abstract void force​(boolean metaData)
    このチャネルのファイルの更新内容は、その記憶装置に強制的に書き込まれます。
    Future<FileLock> lock()
    このチャネルのファイル上に排他ロックを設定します。
    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)
    このチャネルのファイルの指定された領域をロックします。
    <A> void lock​(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)
    指定されたバッファのバイト・シーケンスをこのチャネルの指定されたファイル位置に書き込みます。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    インタフェース java.nio.channels.AsynchronousChannelで宣言されたメソッド

    close

    インタフェース java.nio.channels.Channelで宣言されたメソッド

    isOpen
  • コンストラクタの詳細

    • AsynchronousFileChannel

      protected AsynchronousFileChannel()
      このクラスの新しいインスタンスを初期化します。
  • メソッドの詳細

    • open

      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)メソッドが呼び出されて書込みアクセスがチェックされます。
    • open

      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)メソッドが呼び出されて書込みアクセスがチェックされます。
    • size

      public abstract long size() throws IOException
      このチャネルのファイルの現在のサイズを返します。
      戻り値:
      このチャネルのファイルの現在のサイズ(バイト単位)
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - その他の入出力エラーが発生した場合
    • truncate

      public abstract AsynchronousFileChannel truncate​(long size) throws IOException
      このチャネルのファイルの末尾を切詰め、指定されたサイズにします。

      指定されたサイズが現在のファイル・サイズよりも小さい場合、ファイルの末尾が切り詰められ、新しいファイルの終わりに収まらないバイトが破棄されます。 指定されたサイズが現在のファイル・サイズと同じか、それよりも大きい場合、ファイル・サイズは変更されません。

      パラメータ:
      size - 新しいサイズ。負ではないバイト数
      戻り値:
      このファイル・チャネル
      例外:
      NonWritableChannelException - このチャネルが書込み可能でない場合
      ClosedChannelException - このチャネルがクローズしている場合
      IllegalArgumentException - 新しいサイズが負の値の場合
      IOException - その他の入出力エラーが発生した場合
    • force

      public abstract void force​(boolean metaData) throws IOException
      このチャネルのファイルの更新内容は、その記憶装置に強制的に書き込まれます。

      このチャネルのファイルがローカルの記憶装置上にある場合、このメソッドの戻り値から、このチャネルの作成時またはこのメソッドの一番最近の呼出し以降のファイルの変更内容がすべてそのデバイスに書き込まれていることがわかります。 この方法により、システムがクラッシュしたとき、重要な情報を損失から保護できます。

      一方、ファイルがローカルの記憶装置上にない場合、書込みは行われません。

      metaDataパラメータを使って、このメソッドで実行しなければならない入出力操作の数を制限できます。 このパラメータにfalseを渡した場合、ストレージに書き込む必要があるのは、ファイルのコンテンツの更新内容だけです。trueを渡した場合は、ファイルのコンテンツとメタデータの両方の更新内容を書き込む必要があります。これには、通常1個以上の入出力操作が必要です。 このパラメータに実効性があるかどうかは、基礎となるオペレーティング・システムによって決まるため、未指定です。

      このメソッドを呼び出すと、チャネルが読込み専用であっても入出力操作が発生します。 たとえば、ファイルのメタデータとして最終アクセス時刻を保存し、ファイルの読込みのたびに更新するようなオペレーティング・システムもあります。 この処理が実際に行われるかどうかはシステムによって決まるため、未指定です。

      このメソッドは、このクラスに定義されたメソッドによってこのチャネルのファイルに加えられた変更を強制するだけです。

      パラメータ:
      metaData - trueの場合、このメソッドは、ファイルのコンテンツおよびメタデータの両方に対する変更をストレージに強制的に書き込む必要がある。それ以外の場合はコンテンツの変更のみを強制的に書き込む必要がある
      例外:
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - その他の入出力エラーが発生した場合
    • lock

      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であるがこのチャネルが書込み不可であった場合
    • lock

      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 - このチャネルが書込み可能でない場合
    • lock

      public abstract Future<FileLock> lock​(long position, long size, boolean shared)
      このチャネルのファイルの指定された領域をロックします。

      このメソッドは、このチャネルのファイルの指定された領域でロックを獲得するための操作を開始します。 このメソッドは、lock(long, long, boolean, Object, CompletionHandler)メソッドとまったく同じように動作します。ただし、終了ハンドラを指定する代わりに、このメソッドは保留状態の結果を表すFutureを返します。 Futuregetメソッドは、正常に完了するとFileLockを返します。

      パラメータ:
      position - ロック領域が開始されるファイル位置。負でない値である必要があります
      size - ロック領域のサイズ。負でない値である必要があります。position + sizeも負でない値である必要があります
      shared - 共有ロックを要求する場合はtrue。この場合、このチャネルは読取りが(場合によっては書き込みも)可能である必要があります。排他ロックを要求する場合はfalse。この場合、このチャネルは書込みが(場合によっては読取りも)可能である必要があります
      戻り値:
      保留されている結果を表すFutureオブジェクト
      例外:
      OverlappingFileLockException - このJava仮想マシンによってロックがすでに確保されている場合、または領域をロックしようとしているけれどもまだ保留されている場合
      IllegalArgumentException - 上記のパラメータの前提条件が満たされていない場合
      NonReadableChannelException - sharedがtrueであるがこのチャネルが読取り不可であった場合
      NonWritableChannelException - sharedがfalseであるがこのチャネルが書込み不可であった場合
    • lock

      public final Future<FileLock> lock()
      このチャネルのファイル上に排他ロックを設定します。

      このメソッドは、このチャネルのファイル上で排他ロックを獲得する操作を開始します。 メソッドは、操作の保留されている結果を表すFutureを返します。 Futuregetメソッドは、正常に完了するとFileLockを返します。

      このメソッド呼出しの動作は、次の呼出しの動作とまったく同一です。

           ch.lock(0L, Long.MAX_VALUE, false)
       

      戻り値:
      保留されている結果を表すFutureオブジェクト
      例外:
      OverlappingFileLockException - このJava仮想マシンによってロックがすでに確保されている場合、または領域をロックしようとしているけれどもまだ保留されている場合
      NonWritableChannelException - このチャネルが書込み可能でない場合
    • tryLock

      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()
    • 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)
    • read

      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 - このチャネルが読取り可能でない場合
    • read

      public abstract Future<Integer> read​(ByteBuffer dst, long position)
      このチャネルのバイト・シーケンスを、指定されたファイル位置からバッファに読み込みます。

      このメソッドは、このチャネルのバイト・シーケンスの、指定されたファイル位置から指定されたバッファへの読取りを開始します。 このメソッドは、操作の保留されている結果を表すFutureを返します。 Futuregetメソッドは、読み取られるバイト数であるか、または読み取ろうとした時点で、指定された位置がファイルのサイズ以上である場合は-1です。

      このメソッドは、バイトが指定されたファイル位置から読み取られるという点を除けば、AsynchronousByteChannel.read(ByteBuffer)メソッドと同じです。 読み取ろうとした時点で、指定されたファイル位置がファイルのサイズより大きい場合、バイトは読み取られません。

      パラメータ:
      dst - バイトの転送先バッファ
      position - 転送が開始されるファイル位置。負でない値である必要があります
      戻り値:
      保留されている結果を表すFutureオブジェクト
      例外:
      IllegalArgumentException - positionが負であるか、またはバッファが読取り専用の場合
      NonReadableChannelException - このチャネルが読取り可能でない場合
    • write

      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 - このチャネルが書込み可能でない場合
    • write

      public abstract Future<Integer> write​(ByteBuffer src, long position)
      指定されたバッファのバイト・シーケンスをこのチャネルの指定されたファイル位置に書き込みます。

      このメソッドは、バイト・シーケンスの、指定されたファイル位置の指定のバッファからこのチャネルへの書込みを開始します。 メソッドは、書込み操作の保留されている結果を表すFutureを返します。 Futuregetメソッドは書き込まれたバイト数を返します。

      このメソッドは、バイトが指定されたファイル位置から書き込まれるという点を除けば、AsynchronousByteChannel.write(ByteBuffer)メソッドと同じです。 書き込もうとした時点で、指定された位置がファイルのサイズより大きい場合、ファイルは新しいバイトに合わせて大きくなります。以前のファイルの終わりと新しく書き込まれたバイトの間のバイトの値は未指定です。

      パラメータ:
      src - バイトの転送元バッファ
      position - 転送が開始されるファイル位置。負でない値である必要があります
      戻り値:
      保留されている結果を表すFutureオブジェクト
      例外:
      IllegalArgumentException - 位置が負の値の場合
      NonWritableChannelException - このチャネルが書込み可能でない場合