Я использую этот код для создания .zip со списком файлов:Каков размер буфера для создания архива .zip с использованием Java?
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();
Я не знаю, как работает алгоритм почтового индекса и ZipOutputStream, если он пишет что-то прежде, чем я прочитал и отправить на «Зос 'все данные, файл результатов может быть разным по размеру байтов, чем если бы я выбрал другой размер буфера.
другими словами, я не знаю, если алгоритм, как:
READ DATA -> ПРОЦЕСС DATA -> CREATE .ZIP
или
READ Кусок DATA-- > PROCESS CHUNK OF DATA -> WRITE CHUNK IN .ZIP -> | ^ ------------------------------------------------ -------------------------------------------------- ---------------------------
Если это так, какой размер буфера является лучшим?
Update:
Я испытал этот код, изменяя размер буфера от 1024 до 64, и сжать те же файлы: с 1024 байт результат файла 80 КБ было 3 байта меньше, чем с буфером 64 байта. Каков наилучший размер буфера для создания самого маленького .zip в самое жирное время?
Я принимаю этот ответ, потому что он показывает, что размер буфера не влияет существенно на размер результата, но размер словаря и скользящее окно – Telcontar 2008-10-14 15:16:34