问题:我需要下载大量文件(文件大小可达 2GB)并将它们以 zip 格式发送给请求资源的客户端。我正在寻找并行化该操作。目前,我必须使用的库OutputStream
(在我的情况下是ZipOutputStream
)作为输入,并使用 ApacheCommons 将下载文件的内容写入该输出流IOUtils
。
这种方法的问题是一切都是按顺序发生的。我必须下载一个文件,然后写入 OutputStream,创建一个新的 zipEntry,关闭该条目,然后继续下一个。我想并行执行下载操作,如果可能的话,我还需要ZipOutputStream
并行写入。
有人遇到过这个问题吗?
我计划更改该库的签名以返回InputStream
下载的资源,以便我可以并行获取这些内容,然后按顺序为每个流创建新的 ZipEntry。这样我至少可以并行下载文件。我创建 ZipOutStream 的方式如下:
ZipOutputStream zo = new ZipOutputStream(httpservletResponse.getOutputStream);
有什么想法吗?