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