Descomprimir un archivo Zip en Java

Descomprimir archivos comprimidos Zip usando las librerías nativas de java.
import java.io.*;import java.util.zip.*;

public class UnZip {
   final int BUFFER = 2048;
   public static void main (String argv[]) {
      try {
         BufferedOutputStream dest = null;
         FileInputStream fis = new 	   FileInputStream(argv[0]);
         ZipInputStream zis = new 	   ZipInputStream(new BufferedInputStream(fis));
         ZipEntry entry;
         while((entry = zis.getNextEntry()) != null) {
            System.out.println("Extracting: " +entry);
            int count;
            byte data[] = new byte[BUFFER];
            // write the files to the disk
            FileOutputStream fos = new 	      FileOutputStream(entry.getName());
            dest = new               BufferedOutputStream(fos, BUFFER);
            while ((count = zis.read(data, 0, BUFFER))               != -1) {
               dest.write(data, 0, count);
            }
            dest.flush();
            dest.close();
         }
         zis.close();
      } catch(Exception e) {
         e.printStackTrace();
      }
   }}

También te podría gustar...

11 Respuestas

  1. Carlos dice:

    Gracias por el codigo, pero te remito un bugA la hora de descomprimir un archivo zip con carpetas da una excepcion.Esa excepcion se puede eliminar modificando el codigo en la linea 18 reemplazando con esto:String rutaarchivo=entry.getName();int index=rutaarchivo.lastIndexOf(‘/’);rutaarchivo=rutaarchivo.substring(index+1);FileOutputStream fos = new FileOutputStream(rutaarchivo);

  2. Carlos dice:

    asi mejor:if(!entry.isDirectory()){String rutaarchivo=entry.getName();int index=rutaarchivo.lastIndexOf(‘/’);rutaarchivo=rutaarchivo.substring(index+1);//System.out.println(«test2: «+ carlos);FileOutputStream fos = new FileOutputStream(rutaarchivo);…}

  3. LuisFelipe dice:

    Oye disculpas la ingnorancia, pero en donde queda almacenada la informacion que fue extraida porq no la encuentro..Ayuda

  4. Kaa dice:

    Como quedaria el codigo entonces??

  5. Seni dice:

    Os dejo el código modificado para que funcione.

    Un saludo

    import java.io.*;
    import java.util.zip.*;

    /**
    *
    * @author seni
    */
    public class prueba {
    final static int BUFFER = 2048;
    public static void main (String []args)
    {
    try {
    File dirDestino = new File(«prueba»);
    BufferedOutputStream dest = null;
    FileInputStream fis = new FileInputStream(«C:\\temp\\gestdb_2.4.000.zip»);
    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
    FileOutputStream fos = null;
    ZipEntry entry;
    int count;
    int index = 0;
    byte data[] = new byte[BUFFER];
    String rutaarchivo = null;
    while((entry = zis.getNextEntry()) != null) {
    System.out.println(«Extracting: » +entry);
    rutaarchivo = entry.getName();
    // tenemos que quitar el primer directorio
    index = rutaarchivo.indexOf(«/»);
    rutaarchivo = rutaarchivo.substring(index+1);
    if(rutaarchivo.trim().length() > 0)
    {
    // write the files to the disk
    try {
    dest = null;
    File fileDest = new File(dirDestino.getAbsolutePath() + «/» + rutaarchivo);
    if(entry.isDirectory())
    {
    fileDest.mkdirs();
    }
    else
    {
    if(fileDest.getParentFile().exists() == false)
    fileDest.getParentFile().mkdirs();

    fos = new FileOutputStream(fileDest);
    dest = new BufferedOutputStream(fos, BUFFER);
    while ((count = zis.read(data, 0, BUFFER)) != -1)
    {
    dest.write(data, 0, count);
    }
    dest.flush();
    }
    } finally {
    try { if(dest != null) dest.close(); } catch(Exception e) {;}
    }
    }
    }
    zis.close();
    } catch(Exception e) {
    e.printStackTrace();
    }
    }
    }

  6. Tania dice:

    Hola Seni he estado checando tu codigo, soy nueva en esto, lo ejecute pero no me descmprime ningun archivo, esto es lo que dice al momento de ejecutarlo:
    java.io.FileNotFoundException: C:\Users\ssdscj1\Downloads\MBE-PSA[1].zip (3) (El sistema no puede encontrar el archivo especificado)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java:138)
    at java.io.FileInputStream.(FileInputStream.java:97)
    at decomprimir.Decomprimir.main(Decomprimir.java:19)

    Alguna sugerencia

  7. Ana Belén dice:

    hola, necesito comprimir un archivo xml a formato zip y dividirlo en volúmenes de 150 MB. Habría alguna manera de hacerlo? Gracias!!

Deja un comentario