問題: 大量のファイル (ファイルのサイズは最大 2GB まで) をダウンロードし、リソースを要求しているクライアントにそれらを zip として送信する必要があります。私はその操作を並列化しようとしていました。現在、私が使用しているライブラリはOutputStream
(私の場合はZipOutputStream
) を入力として取り、ダウンロードしたファイルのコンテンツを ApacheCommons を使用してその出力ストリームに書き込みますIOUtils
。
このアプローチの問題は、すべてが順番に発生することです。1 つのファイルをダウンロードしてから OutputStream に書き込み、新しい zipEntry を作成し、そのエントリを閉じてから次のエントリに進む必要があります。ダウンロード操作を並行して実行したかったのですが、可能であれば書き込みもZipOutputStream
並行して行う必要があります。
誰もこのことに直面したことがありますか?
そのライブラリの署名をダウンロードしたリソースを返すように変更してInputStream
、それらのコンテンツを並行して取得し、それらのストリームごとに新しい ZipEntry を順番に作成することを計画していました。このようにして、少なくともファイルを並行してダウンロードできます。ZipOutStream を作成する方法は次のとおりです。
ZipOutputStream zo = new ZipOutputStream(httpservletResponse.getOutputStream);
何かご意見は?