ByteArrayOutputStreamとZipOutPutSteamを使用して1つのzipファイルを作成していますが、約200MB近くの大きなzipファイルを作成するには時間がかかります。効率的な方法はありますか?ZipファイルをZipOutPutStreamからJax-rsを使用してダウンロード
URL u = new URL(url);
URLConnection uc = u.openConnection();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(out);
zipOut.putNextEntry(new ZipEntry("file.csv"));
zipOut.write(IOUtils.toByteArray(uc.getInputStream()));
uc.getInputStream().close();
zipOut.closeEntry();
zipOut.close();
ResponseBuilder response = Response.ok(out.toByteArray());
response.header("Content-Disposition", "attachment;
filename=\"LMPeriod.zip\"");
return response.build();
圧縮レベルで再生できます。ファイルをあらかじめ圧縮することができます。私。バックグラウンドで圧縮を行う仕事をしています。圧縮されたファイルをキャッシュすることができます。圧縮自体は、1kBのデータ+ファイルシステムからのデータの読み込みに約2マイクロ秒かかります。あなたの解決策(ファイル全体をメモリに読み込んでメモリに圧縮する)では、複数の同時ダウンロード要求があると、メモリの問題に遭遇する可能性があります。 – andih