使用Vert.x和RX2Java读取行

问题描述 投票:0回答:1

我正在使用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-java rx-java2 vert.x
1个回答
0
投票

您只需替换此行:

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

通过:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.