gpt4 book ai didi

Vert.x 将缓冲区写入 WriteStream?

转载 作者:行者123 更新时间:2023-12-04 14:24:14 24 4
gpt4 key购买 nike

在我正在实现的 Vert.x verticle 中,我有一个之前加载到内存中的缓冲区,现在我想将它转储到磁盘中。

据我所知,我们应该使用 Pump 来确保不会使 WriteStream 过载。

但我没有找到从缓冲区获取 ReadStream 子实例的方法。难道不应该有一种简单/标准的方法来做到这一点吗?

问候

最佳答案

一般来说,vert.x 不会对直接写入 AsyncFile 的任何问题发出警告。秒。此外,他们还提供了使用 AsyncFile.write 的相应示例。直接在这里并声明您可以使用这些直接编写:http://vertx.io/docs/vertx-core/java/#_asynchronous_files

但是,如果您想要 pumpBuffer你需要一个 ReadStream<Buffer> 的实例连同 AsyncFile泵入。您可以使用 PitchPoint Solutions 的实现(版权所有 2016 The Simple File Server Authors):

https://github.com/pitchpoint-solutions/sfs/blob/master/sfs-server/src/main/java/org/sfs/io/BufferReadStream.java

综合起来:

CompletableFuture<Void> done = new CompletableFuture<>();

Buffer buffer = Buffer.buffer(new byte[100]);

Vertx.vertx().fileSystem.open("myfile.txt", new OpenOptions(), res -> {
if (res.succeeded()) {
AsyncFile outputFile = res.result();

BufferReadStream reader = new BufferReadStream(buffer)
Pump pump = Pump.pump(reader, outputFile);
pump.start();
reader.endHandler((r) -> {
pump.stop(); // not sure this is required
done.complete(null);
});

} else {
// Something went wrong!
}
});

// wait elsewhere
done.get();

关于Vert.x 将缓冲区写入 WriteStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com