Java – Crear archivo ZIP

Para crear un archivo ZIP en Java no requerimos importar librerías adicionales en Maven, el paquete util provee de las clases necesarias para crear un archivo ZIP.

» Ver más ejemplos de Java

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

Usaremos un archivo cualquiera para comprimir.

Crear archivo ZIP en Java



El código:

package com.decodigo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 *
 * @author decodigo.com
 */
public class CrearZip {
    public static void main( String[] args )
    {
    	byte[] buffer = new byte[1024];
    	
    	try{
    		
    		FileOutputStream fos = new FileOutputStream("/ruta_archivos/archivo_zip.zip");
    		ZipOutputStream zos = new ZipOutputStream(fos);
    		ZipEntry ze= new ZipEntry("ExcelEjemplo.xlsx");
    		zos.putNextEntry(ze);
    		FileInputStream in = new FileInputStream("/ruta_archivos/ExcelEjemplo.xlsx");
   	   
    		int len;
    		while ((len = in.read(buffer)) > 0) {
    			zos.write(buffer, 0, len);
    		}

    		in.close();
    		zos.closeEntry();
           
    		zos.close();
          
    		System.out.println("Hecho");

    	}catch(IOException ex){
    	   ex.printStackTrace();
    	}
    }
}

Las líneas en las que debes poner especial atención son las siguientes:

La clase FileOutputStream es usada para crear el archivo ZIP con nuestros archivos, que en este caso sólo es uno.

FileOutputStream fos = new FileOutputStream("/ruta_archivos/archivo_zip.zip");

La clase ZipOutputStream permite comprimir cada una de las entradas generadas a partir de la clase ZipEntry con el nombre del archivo original o el que desees.  Desde luego hay que crear un FileInputStream donde especificamos la ruta del archivo que queremos comprimir.

ZipOutputStream zos = new ZipOutputStream(fos);
ZipEntry ze= new ZipEntry("ExcelEjemplo.xlsx");
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream("/ruta_archivos/ExcelEjemplo.xlsx");

Escribiremos el contenido de nuestro archivo fuente con la función write y ZipOutputStream se encarga de hacer la compresión.

    		int len;
    		while ((len = in.read(buffer)) > 0) {
    			zos.write(buffer, 0, len);
    		}

    		in.close();
    		zos.closeEntry();
           
    		zos.close();

No olvides cerrar los streams y la entrada.

Si corremos el ejemplo obtenemos los siguiente:

Crear archivo ZIP en Java

El archivo archivo_zip.zip contendrá al archivo de ejemplo y desde luego tu puedes usar cualquier otro.

Esperamos que este ejemplo de crear un archivo ZIP en Java te sea de utilidad.

Más información en inglés: https://geekole.com/create-zip-files-in-java/