返回文章列表

文章

Vert.x 教程(六)

异步数据和事件流

# 1、统一的流模型 Vert.x提供了跨资源类型(如文件、网络套接字)的各种流的统一抽象。“读取流”是指可供读取的事件源,而“写入流”是指事件发往目的地。例如,HTTP请求就是一个读取流,HTTP响应则是一个写入流(这里的读取和写入是针对服务端而言的,并不是客户端)。 Vert.x中读写流分别由io.vertx.core.streams包的ReadStream和WriteStream两个接口定义。大多数情况下,开发人员都是跟实现了这两个接口的API打交道,而不必自己实现他们。 **ReadStream的基本方法**
方法描述
handler(Handler<T>)处理新读到的类型T的数据(如Buffer、byte、JsonObject等)
exceptionHandler<Handler<Throwable>>处理读取异常
endHandler(Handler<Void>)流关闭时被调用(可能时因为数据被读完或出现异常)
                       **WriteStream的基本用法**
方法描述
write(T)写入类型T的数据(如Buffer、byte、JsonObject等)
exceptionHandler<Handler<Throwable>>处理读取异常
end()关闭流
end(T)写入类型T的数据,再关闭流

对比JDK I/O读取文件和Vert.x的I/O读取文件

package com.chapter4;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Example1 {
    public static void main(String[] args) {
        File file = new File("LICENSE");
        byte[] data = new byte[1024];
        try (FileInputStream fis = new FileInputStream(file)) {
            int bytesRead = fis.read(data);
            while (bytesRead != -1) {
                System.out.println(new String(data, 0, bytesRead));
                bytesRead = fis.read(data);
            }
        } catch (IOException e) {
            System.err.println("Error reading file: " + e.getMessage());
        }finally {
            System.out.println("File reading completed!");
        }
    }
}