使用 Vert.x 和 RxJava 读取行

Read lines using Vert.x and RxJava

我正在使用 Vert.x 文件系统 API 读取 属性 文件,需要对其进行一些转换。问题是文件不是逐行读取的,而是作为一个块读取的。 所以,假设我有这个 属性 文件:

name=abc
name=def

并使用此代码:

vertx.fileSystem().rxReadFile("/path/file.properties")
        .map(buffer -> buffer.toString())
        .subscribe(data -> {
            System.out.println(">"+data);
        }, err -> System.out.println("Cannot read the file: " + err.getMessage()));

我打印的是单个数据块:

>name=abc
name=def

我希望得到以下结果,因为我必须对每一行执行转换:

>name=abc
>name=def

你可以只替换这一行:

.map(buffer -> buffer.toString())

作者:

.flatMapObservable(buffer -> Observable.fromArray(buffer.toString().split("\n")))

上面的代码将按换行符拆分缓冲区并逐行发送到流。