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

Subir y descomprimir archivo zip al mismo tiempo

Estas en el tema de Subir y descomprimir archivo zip al mismo tiempo en el foro de Java en Foros del Web. ¿Se puede subir y descomprimir un archivo *.zip al mismo tiempo? Código PHP: import java . io . BufferedInputStream ; import java . io . BufferedOutputStream ; ...
  #1 (permalink)  
Antiguo 09/03/2012, 16:56
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 3 meses
Puntos: 10
Subir y descomprimir archivo zip al mismo tiempo


¿Se puede subir y descomprimir un archivo *.zip al mismo tiempo?

Código PHP:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import static java.lang.System.out;
public class 
Prueba13 {
    public static final 
int BUFFER 2048;
    public static final 
String path="C:/Users/alguien/Documents/NetBeansProjects/IntroGWT1/pruebaDescomprimir/descomprime/pruebaZip.zip";
    public static final 
String destino="C:/temp/";

 public  static 
void main(String[] args)throws Exception{
     
Prueba13 pro=new Prueba13();
     
out.println("[Inicio descomprimir]");
     
out.println("Lee: "+path.toString());
     
//ver
     
pro.leer(path);
     
FileInputStream fis=new FileInputStream(path);
     
out.println("Descomprime:");
     
//descomprimir solo xml y pdf
     
pro.descomprimirGuardar(fis);
    
out.println("[Fin descomprimir]");

 }

 
//descomprimir y guardar en directorio por default
 
public  void descomprimirGuardar(FileInputStream fis){
 try {
         
BufferedOutputStream dest null;
         
ZipInputStream zis = new     ZipInputStream(new BufferedInputStream(fis));
         
ZipEntry entry;
         while((
entry zis.getNextEntry()) != null) {
// System.out.println("Extrayendo: " +entry);
  //si no es directorio
if(!entry.isDirectory()){
if(
esPDF(entry)){
   
out.println(entry+"  >>> es pdf: "+esPDF(entry));
    
descomprime(entry,dest,zis);
}
if(
esXML(entry)){
  
out.println(entry+"  >>> es xml: "+esXML(entry));
   
descomprime(entry,dest,zis);
}
}

//si es directorio
if(entry.isDirectory()){
    
out.println("[Directorio encontrado]");
if(
esPDF(entry)){
    
out.println(entry+" >>>  es pdf: "+esPDF(entry));
    
descomprime(entry,dest,zis);
}
if(
esXML(entry)){
   
out.println(entry+" >>> es xml: "+esXML(entry));
   
descomprime(entry,dest,zis);
}
}
}
zis.close();
}
catch(
Exception e) {e.printStackTrace();}

 }
//proceso para descomprimir
 
public void descomprime(ZipEntry entry,BufferedOutputStream dest,ZipInputStream zisthrows IOException{
    
//dest --> revisar el "destino" de los archivos descomprimidos
//   String currentEntry = entry.getName();
//     File destFile =new File(destino, currentEntry);
//     File destinationParent = destFile.getParentFile();
//     destinationParent.mkdirs();
//------------------------------------------------------------
     
try{
       
int count;
            
byte[] data = new byte[BUFFER];
            
FileOutputStream fos = new     FileOutputStream(entry.getName());
            
dest = new BufferedOutputStream(fosBUFFER);
            while ((
count zis.read(data0BUFFER))!= -1) {
               
dest.write(data0count);
            }
     }catch(
Exception exc){
     }
     
dest.flush();
     
dest.close();
 }
//solo lee el contenido, identificando pdf y/o xml
 
public void leer(String path){
try {
FileInputStream fis = new FileInputStream(path);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze;
while((
ze=zis.getNextEntry())!=null){
    
//si no es directorio
if(!ze.isDirectory()){
if(
esPDF(ze)){
   
out.println(ze+"  >>> es pdf: "+esPDF(ze));
}
if(
esXML(ze)){
  
out.println(ze+"  >>> es xml: "+esXML(ze));
}
}
//si es directorio
if(ze.isDirectory()){
    
out.println("[Directorio encontrado]");
if(
esPDF(ze)){
    
out.println(ze+" >>>  es pdf: "+esPDF(ze));
}
if(
esXML(ze)){
   
out.println(ze+" >>> es xml: "+esXML(ze));
}
}
zis.closeEntry();
}
zis.close();
} catch (
FileNotFoundException e) {
e.printStackTrace();
} catch (
IOException e) {
e.printStackTrace();
}
}
 
//si es pdf
 
public boolean esPDF(ZipEntry arch){
      if(
arch.getName().endsWith("pdf"))
         return 
true;
 return 
false;
 }
//si es xml
 
public boolean esXML(ZipEntry arch){
     if(
arch.getName().endsWith("xml"))
         return 
true;
 return 
false;
 }





  #2 (permalink)  
Antiguo 10/03/2012, 11:42
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Subir y descomprimir archivo zip al mismo tiempo

El código de arriba es para descomprimir solo archivos con extensión *.pdf y *.xml.

El problema es que quiero a hacer este proceso al subir un archivo comprimido (*.zip) a un directorio.

Solo quiero saber si se puede.
  #3 (permalink)  
Antiguo 21/11/2012, 10:16
Avatar de pierxo  
Fecha de Ingreso: septiembre-2012
Mensajes: 20
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Subir y descomprimir archivo zip al mismo tiempo

De ser posible lo es yo tengo un problema similar cuando ejecuto mi codigo me sale acceso denegado.. En tu codigo creo que debes cambiar esta linea

FileInputStream fis=new FileInputStream(path);

por esta:

FileInputStream fis=new FileInputStream(destino);

para que envie a tu carperta destino
  #4 (permalink)  
Antiguo 21/11/2012, 10:45
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Subir y descomprimir archivo zip al mismo tiempo

Por supuesto que se puede, no se donde ves el impedimento. Simplemente, haz las cosas por orden.

En primer lugar, crea el upload donde te subiran el fichero ZIP. Una vez tengas el fichero subido, sabiendo la ruta y el nombre pasas a descomprimirlo.

Etiquetas: descomprimir, java.util.zip, zip
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 07:40.