このコードを使用して、ファイルのリストを含む .zip を作成します。
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
for (int i=0;i<srcFiles.length;i++){
String fileName=srcFiles[i].getName();
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
InputStream fis = new FileInputStream(srcFiles[i]);
int read;
for(byte[] buffer=new byte[1024];(read=fis.read(buffer))>0;){
zos.write(buffer,0,read);
}
fis.close();
zos.closeEntry();
}
zos.close();
zip アルゴリズムと ZipOutputStream がどのように機能するのかわかりません。すべてのデータを読み取って「zos」に送信する前に何かを書き込むと、別のバッファ サイズを選択した場合とは結果ファイルのバイト サイズが異なる場合があります。
つまり、アルゴリズムが次のようになっているかどうかはわかりません。
データの読み取り-->データの処理-->.ZIP の作成
また
データのチャンクを読み取る-->データのチャンクを処理する-->.ZIPにチャンクを書き込む-->| ^-------------------------------------------------- -------------------------------------------------- --------------------------
この場合、最適なバッファ サイズはどれくらいですか?
アップデート:
このコードをテストし、バッファー サイズを 1024 から 64 に変更して、同じファイルを圧縮しました。1024 バイトでは、80 KB の結果ファイルは、64 バイトのバッファーよりも 3 バイト小さくなりました。最も短い時間で最小の .zip を生成するのに最適なバッファー サイズはどれですか?