首页 > 解决方案 > 使用 Vert.x 和 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

标签: rx-javarx-java2vert.x

解决方案


您可以替换这一行:

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

经过:

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

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


推荐阅读