このコードを使用して、ファイルのリストを含む .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 を生成するのに最適なバッファー サイズはどれですか?