【问题标题】:Read text file line by line with reactor用reactor逐行读取文本文件
【发布时间】:2020-08-06 12:35:03
【问题描述】:

我想使用 Flux 读取文件。基本上我想做的是将我的spring-boot jar中的文本文件转换为Flux<String>

@SneakyThrows
@Override
public Flux<String> getLines() {
    final InputStream inputStream = new ClassPathResource(pathToFile).getInputStream();
    final InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    final BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    return Flux.using(
        bufferedReader::lines,
        Flux::fromStream,
        stringStream -> {
            close(inputStreamReader);
            close(bufferedReader);
            stringStream.close();
        }
    );
}

private void close(final Closeable closeable) {
    try {
        closeable.close();
    } catch (final IOException e) {
        throw new RuntimeException(e);
    }
}

我不确定我这样做是否正确,以及如何改进它(但它可以正常工作)

编辑: 我将其重构为:

return Flux.using(
    () -> new ClassPathResource(pathToFile).getInputStream(),
    is -> Flux.using(
        () -> new InputStreamReader(is),
        isr -> Flux.using(
            () -> new BufferedReader(isr),
            br -> Flux.using(
                br::lines,
                Flux::fromStream,
                BaseStream::close
            ),
            this::close
        ),
        this::close
    ),
    this::close
)

【问题讨论】:

    标签: java spring-webflux project-reactor


    【解决方案1】:

    我将其重构为:

    return Flux.using(
       () -> new ClassPathResource(pathToFile).getInputStream(),
        is -> Flux.using(
            () -> new InputStreamReader(is),
            isr -> Flux.using(
                () -> new BufferedReader(isr),
                br -> Flux.using(
                    br::lines,
                    Flux::fromStream,
                    BaseStream::close
                ),
                this::close
            ),
            this::close
        ),
        this::close
    )
    

    它工作正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多