que utiliza este código para crear un .zip con una lista de archivos:¿Cuál es el tamaño del búfer para crear un archivo .zip usando 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();
no sé cómo el algoritmo de cremallera y el ZipOutputStream funciona, si se escribe algo antes de leer y enviar a 'zos 'todos los datos, el archivo de resultados puede ser diferente en tamaño de bytes que si elijo otro tamaño de búfer.
en otras palabras, no sé si el algoritmo es como:
leer datos -> datos de proceso -> Crear .ZIP
o
LEER trozo de Data-- > PROCESO CHUNK OF DATA -> ESCRIBIR CHUNK IN .ZIP -> | ^ ------------------------------------------------ -------------------------------------------------- ---------------------------
Si este es el caso, ¿qué tamaño de búfer es el mejor?
Actualización:
He probado este código, cambiando el tamaño tampón procedente 1,024 a 64, y comprimir los mismos archivos: con 1024 bytes del archivo de resultados 80 KB fue de 3 bytes más pequeña que con tampón de 64 bytes. ¿Cuál es el mejor tamaño de buffer para producir el .zip más pequeño en el tiempo de prueba?
Acepto esta respuesta porque muestra que el tamaño del búfer no afecta significativamente el tamaño del resultado sino el tamaño del diccionario y la ventana deslizante – Telcontar