Читать строки, используя Vert.x и RxJava - PullRequest
0 голосов
/ 06 октября 2019

Я читаю файл свойств с помощью API файловой системы Vert.x, и мне потребуется выполнить некоторые преобразования в нем. Проблема в том, что файл читается не построчно, а как отдельный блок. Итак, при условии, что у меня есть этот файл свойств:

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

1 Ответ

1 голос
/ 06 октября 2019

Вы можете просто заменить эту строку:

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

By:

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

Приведенный выше код разделит буфер на разрывы строк и отправит строку за строкой в ​​поток.

...