我正在使用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")))
上面的代码将按换行符分割缓冲区,并逐行发送到流。