gpt4 book ai didi

java - GZIPOutputStream 在单独的线程中进行压缩

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

是否有 GZIPOutputStream 的实现可以在单独的线程中完成繁重的工作(压缩+写入磁盘)?

我们正在不断写入大量 GZIP 压缩数据。我正在寻找一个可以代替 GZIPOutputStream 的直接替代品。

最佳答案

您可以写入 PipedOutputStream 并有一个线程读取 PipedInputStream 并将其复制到您喜欢的任何流。

这是一个通用实现。您给它一个要写入的 OutputStream,它会返回一个要写入的 OutputStream。

public static OutputStream asyncOutputStream(final OutputStream out) throws IOException {
PipedOutputStream pos = new PipedOutputStream();
final PipedInputStream pis = new PipedInputStream(pos);
new Thread(new Runnable() {
@Override
public void run() {
try {
byte[] bytes = new byte[8192];
for(int len; (len = pis.read(bytes)) > 0;)
out.write(bytes, 0, len);
} catch(IOException ioe) {
ioe.printStackTrace();
} finally {
close(pis);
close(out);
}
}
}, "async-output-stream").start();
return pos;
}

static void close(Closeable closeable) {
if (closeable != null) try {
closeable.close();
} catch (IOException ignored) {
}
}

关于java - GZIPOutputStream 在单独的线程中进行压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532073/

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