2

java.nio.channels.AsynchronousFileChannel提供两种从文件中读取数据的方法:

  1. read(dst, position, attachment, handler)完成后将调用提供的处理程序
  2. read(dst, position)返回一个Future允许我get()得到操作结果的

CompletionHandler接口指定了一个方法failed(Throwable exc, A attachment),而没有Future。它只能选择ExecutionException从其get()方法中抛出一个。

假设我从片状磁盘上读取文件,并且磁盘抛出 IO-Error,在这两种情况下将如何处理?

具体来说,我有以下 3 个问题:

  1. 会调用failed()上的方法吗?CompletionHandler或者它会将操作指示为completed的结果-1
  2. get()方法会Future抛出异常,还是会简单地-1作为读取结果返回?
  3. 如果-1在任何一种情况下都返回,我如何区分 IO-Error 和简单的 EOF 条件(最好没有像操作计时这样的黑客攻击)?

出于某种原因,我找不到任何关于此的文档...

4

0 回答 0