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条件(できれば操作のタイミングなどのハックなし)をどのように区別できますか?
何らかの理由で、これに関するドキュメントが見つかりません...