我想有效地解析以 .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
非常感谢
这归结为创建一个
io.vertx.core.streams.ReadStream
,以便异步执行 I/O 并提供背压支持。
这并不难做到,但您也可以使用已经创建的代码,例如