rx-java - 使用 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
解决方案
您可以替换这一行:
.map(buffer -> buffer.toString())
经过:
.flatMapObservable(buffer -> Observable.fromArray(buffer.toString().split("\n")))
上面的代码将按换行符拆分缓冲区并逐行向流发出。
推荐阅读
- azure - ASE 中带有点的 URL 中的应用服务返回 404
- python - 如何插入:在 Python 中执行 re 时使用分号
- php - textarea 样式未提交
- corda - 现有 Corda 网络的新节点尚未出现
- php - 如何为包含多个 SELECT 语句的查询编写准备好的语句
- jenkins-pipeline - 具有声纳集成的 Jenkins 文件
- ios - iOS(dbm)中的信号强度?
- yii2 - Yii2如何在Html activeInput上分配小部件
- python - 如何在多个模块中使用 logging.getLogger(__name__)
- c++ - 仅锁定两个可能的互斥锁之一