java.nio.channels.AsynchronousFileChannel
ファイルからデータを読み取るための2つの方法を提供します。
read(dst, position, attachment, handler)
完了すると、提供されたハンドラーを呼び出しますread(dst, position)
操作の結果をFuture
表示できるaを返しますget()
CompletionHandler
インターフェイスはメソッドfailed(Throwable exc, A attachment)
を指定しますが、は指定Future
しません。メソッドExecutionException
からをスローするオプションしかありません。get()
不安定なディスク上のファイルから読み取り、ディスクがIOエラーをスローしたとしましょう。この場合、これはどのように処理されますか?
具体的には、次の3つの質問があります。
- 上の
failed()
メソッドCompletionHandler
が呼び出されますか?それともcompleted
、結果としての操作を示し-1
ますか? - スローの
get()
メソッドFuture
は例外をスローしますか、それとも単に-1
読み取り結果として返されますか? - いずれかの場合
-1
にが返される場合、IOエラーと単純なEOF条件(できれば操作のタイミングなどのハックなし)をどのように区別できますか?
何らかの理由で、これに関するドキュメントが見つかりません...