Foros del Web » Programación para mayores de 30 ;) » Java »

Descomprimir zips

Estas en el tema de Descomprimir zips en el foro de Java en Foros del Web. Hola a todos, Tengo el siguiente código para descomprimir archivos: public void descomprimirArchivo() { String path; boolean error = false; int fichProcesados = 0; int ...
  #1 (permalink)  
Antiguo 27/04/2007, 00:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 10
Antigüedad: 17 años, 1 mes
Puntos: 0
Descomprimir zips

Hola a todos,

Tengo el siguiente código para descomprimir archivos:

public void descomprimirArchivo() {
String path;
boolean error = false;
int fichProcesados = 0;
int fichTotal = 0;

path = txtRuta.getText();
File dir = new File(path);
String[] ficheros = dir.list();
if (ficheros.length == 0){
JOptionPane.showMessageDialog(null,"No hay ficheros en el directorio especificado","Aviso", JOptionPane.ERROR_MESSAGE);
}
else{
fichTotal = ficheros.length;
for (int i=0;i<ficheros.length;i++){
try{
//crear un ZipInputStream para leer el fichero zip
FileInputStream fis = new FileInputStream(path + File.separator + ficheros[i]);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
//crear un bucle para recorrer todos los archivos del zip
while((entry = zis.getNextEntry()) != null){
File file = new File(dir.getAbsolutePath() + File.separator + entry.getName());
ZipFile zipFile = new ZipFile(path + File.separator + ficheros[i]);
if(!entry.isDirectory()){
BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry), BUFFER_SIZE);
String parentName;
if((parentName = file.getParent()) != null){
File dire = new File(parentName);
//File dire = new File(ficheros[i] + parentName);
dire.mkdirs();
}
BufferedOutputStream dest = new BufferedOutputStream(new FileOutputStream(file), BUFFER_SIZE);
int cont;
while((cont = bis.read()) != -1){
dest.write(cont);
}
bis.close();
dest.close();
}
else{
file.mkdirs();
}
entry = zis.getNextEntry();
}
zis.close();
fichProcesados ++;
}
catch(Exception exc){
error = true;
exc.printStackTrace();
}
}
if (error = false){
JOptionPane.showMessageDialog(null,"Los ficheros se han extraído con éxito", "Aviso",JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(null,"Se han extraído " + fichProcesados + " ficheros de los " + fichTotal + ".", "Aviso",JOptionPane.INFORMATION_MESSAGE);
}
}

}

Lo que quiero es que la primera carpeta que se me cree sea una que tenga el nombre del zip, y que en ella se me construya toda la estructura de carpetas (o archivos). Porque lo que tengo que descomprimir son zip´s, que contienen la misma estructura pero que se llaman diferente.
No sé si me he explicado bien....
muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 27/04/2007, 02:05
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: Descomprimir zips

Wenas

Has pensado en usar un batch para hacer lo que quieres y desde java llamar a ese batch con runtime.exec???
  #3 (permalink)  
Antiguo 27/04/2007, 02:10
 
Fecha de Ingreso: marzo-2007
Mensajes: 10
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Descomprimir zips

Pues no, la verdad... pero de todas formas tampoco sé muy bien lo que me dices...

en otros lenguajes lo que hago es una llamada a la shell, indicando ciertos parámetros y ya está...

De todas formas voy a investigar lo que me dices...

gracias!
  #4 (permalink)  
Antiguo 27/04/2007, 03:55
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Descomprimir zips

No acabo de entender el problema. Si tienes el nombre del zip ¿Cual es el problema en crear una carpeta con ese nombre?
  #5 (permalink)  
Antiguo 27/04/2007, 05:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 10
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Descomprimir zips

Que al hacer dir.getAbsolutePath() , ya me coge la primera carpeta comprimida en vez de cogérmelo con el nombre del zip(--> me puede dar d:\prueba\etc, y que el zip se llame ayuda.zip, que contiene esa estructura). Entonces luego no sé concatenar a lo que me sale el nombre del zip.
Ya siento no explicarme bien...
  #6 (permalink)  
Antiguo 27/04/2007, 05:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Descomprimir zips

No acabo de entender exactamente que quieres hacer y que no te sale, pero en el API de java.io.File tienes todos los metodos necesarios: De un fichero sacar el directorio que lo contiene, de un fichero sacar el nombre, crear un fichero dentro de un directorio... etc.

S!
  #7 (permalink)  
Antiguo 18/05/2009, 14:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Descomprimir zips

hola, me puedes mandar tu codigo completo de descomprimir archivos?

Que el mio no me sale cuando tiene carpetas.

Y traté de usar el tuyo y cambiandole unas cositas aun me sigue dando error.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.