技术开发 频道

Java7 NIO.2入门:异步通道API教程

  完成处理程序

  使用 Future 对象的替代机制,是向异步操作注册一个 callback 。接口 CompletionHandler 有两个方法:

  void completed(V result, A attachment) 在任务完成结果中具有类型 V 时执行。

  void failed(Throwable e, A attachment) 在任务由于 Throwable e 而失败时执行。

  两个方法的附件参数都是一个传递到异步操作的对象。如果相同的对象用于多个操作,其可用于追踪哪个操作已完成。

  Open 命令

  我们来看一个使用 AsynchronousFileChannel 类的例子。可通过将 java.nio.file.Path 对象传递到静态 open() 方法中,来创建一个新的通道:

AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(Paths.get("myfile"));

  Path 是 Java 7 中的新类,可在 第 2 部分 中找到更多细节。可利用 Paths.get(String) 实用方法,从代表文件名的 String 中创建 Path。

  默认情况下,该文件已打开以供读取。open() 方法可利用附加选项来指定如何打开该文件。例如,此调用打开文件以供读取或写入,如果必要将创建该文件,并在通道关闭或者 JVM 终止时尝试删除文件:

fileChannel = AsynchronousFileChannel.open(Paths.get("afile"),
    StandardOpenOption.READ, StandardOpenOption.WRITE,
    StandardOpenOption.CREATE, StandardOpenOption.DELETE_ON_CLOSE);

  替代方法,open() 提供了对通道的更好的控制,允许设置文件属性。

0
相关文章