如何使用 VertX 高效地获取 gz 文件?

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

我想有效地解析以 .gz 格式压缩的文本文件。

目前我使用同步 API 来获取行,然后将内容发送到另一个 verticle。

vertx.fileSystem().open("myFile.gz",new OpenOptions(),ar-> {
  if(ar.succeeded()){
    AsyncFile asyncFile = ar.result();
    asyncFile.handler(h -> {
      try(
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream (h.getBytes());
        GZIPInputStream gzip = new GZIPInputStream(byteArrayInputStream );
        InputStreamReader inputStreamReader = new InputStreamReader(gzip);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader)){
          bufferedReader.lines().forEach(line -> vertx.eventBus().send("line",line));
       } catch(Exception ex) {}
    });
}
});

VertX API 中有处理压缩文件的对象吗?

使用 Java 21 和 VertX 4.5.7

非常感谢

gzip vert.x
1个回答
0
投票

这归结为创建一个

io.vertx.core.streams.ReadStream
,以便异步执行 I/O 并提供背压支持。

这并不难做到,但您也可以使用已经创建的代码,例如

  1. 这个第 3 方库 vertx-java.io
  2. 这个要点
© www.soinside.com 2019 - 2024. All rights reserved.