java.nio.channels.AsynchronousFileChannel
提供两种从文件中读取数据的方法:
read(dst, position, attachment, handler)
完成后将调用提供的处理程序read(dst, position)
返回一个Future
允许我get()
得到操作结果的
CompletionHandler
接口指定了一个方法failed(Throwable exc, A attachment)
,而没有Future
。它只能选择ExecutionException
从其get()
方法中抛出一个。
假设我从片状磁盘上读取文件,并且磁盘抛出 IO-Error,在这两种情况下将如何处理?
具体来说,我有以下 3 个问题:
- 会调用
failed()
上的方法吗?CompletionHandler
或者它会将操作指示为completed
的结果-1
? - 该
get()
方法会Future
抛出异常,还是会简单地-1
作为读取结果返回? - 如果
-1
在任何一种情况下都返回,我如何区分 IO-Error 和简单的 EOF 条件(最好没有像操作计时这样的黑客攻击)?
出于某种原因,我找不到任何关于此的文档...