[SOLUCIONADO]Extraer archivos dentro de un .jar

Iniciado por cyberserver, 28 Diciembre 2009, 04:09 AM

0 Miembros y 1 Visitante están viendo este tema.

cyberserver

Hola amigos!!!!! quiero saber si alguien conoce la forma de extrarer los archivos dentro de un .jar!!! aaaa pero dentro de codigo java.....!!!

Creo k es con java.util.jar pero ya me canse de buscar como hacerle y no lo puedo encontrar!!! facilitenme la tarea y pasenme el instructivo!!1

De antemano gracias...

Posdata: quiero extraerlos todos a la ves






Shell Root

CitarLo principal es como conseguir la URL de nuestro JAR y jugar con la clase ZipFile para extraer los archivos del mismo.

myClassName = this.getClass().getName() + ".class";
URL urlJar = this.getClass().getClassLoader().getSystemResource(myClassName);


Les dejo un articulo de javaworld donde se trata este tema con mas profundidad.
Fuente: http://fetishcode.wordpress.com/2007/10/20/extraccion-de-ficheros-desde-jar/
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

cyberserver

Casualmente ya ley ese articulo pero no veo la forma de extrarer los archivos!!! aii solo guarda la URL del jar!!!

Tambien segui el vinculo y no encontre la forma. gracias






Leyer

#3
 :-X


Leyer

#4
despues de varios intentos creo Que te lo tengo  :)

http://jleyer.wordpress.com/2010/07/18/extraer-archivos-de-un-jar-desde-java/

Código (java) [Seleccionar]
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
     /**
      * @author leyer
      */
public class JarExtract {
public static void extractJar(String jarFile, java.io.File directory)throws IOException{
java.util.jar.JarInputStream jarInput = new java.util.jar.JarInputStream(new FileInputStream(jarFile));
java.util.jar.JarEntry jarEntry=null;
    while((jarEntry=jarInput.getNextJarEntry())!=null){
    java.io.File file=new java.io.File(directory,jarEntry.getName());
        if (jarEntry.isDirectory()){
        if (!file.exists())
                file.mkdirs();
        }else{ java.io.File dir = new java.io.File(file.getParent());
            if (!dir.exists())dir.mkdirs();
            byte[] bytes = new byte[1024];
            java.io.InputStream inputStream   = new BufferedInputStream(jarInput);
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            int read = -1;
            while ((read = inputStream.read(bytes)) != -1) {
           fileOutputStream.write(bytes, 0, read);
       }
            fileOutputStream.close();            
        }
    }}
public static void main(String[] args) throws IOException {
extractJar("Archivo.jar",new java.io.File("/home/leyer/"));
}


Saludos.

cyberserver

EAEA muy chido tu codigo asi como bien estructurado!!!

Miren encontre la forma de sacar a un archivo especifico del jar. claso siempre y cuando la clases este dentro del paquete!!!


public void sacarArchivoJar(String Archivo,String RutaDescarga){

try {
            InputStream in = getClass().getResourceAsStream(Archivo);
            OutputStream out = new FileOutputStream(RutaDescarga);

            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
            System.out.print("Copiado con exito");
        } catch (Exception e) {
            System.out.println(e);
        }

}
}






Debci

Cita de: cyberserver en 30 Diciembre 2009, 07:15 AM

public void sacarArchivoJar(String Archivo,String RutaDescarga){

try {
            InputStream in = getClass().getResourceAsStream(Archivo);
            OutputStream out = new FileOutputStream(RutaDescarga);

            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
            System.out.print("Copiado con exito");
        } catch (Exception e) {
            System.out.println(e);
        }

}
}


Bro siempre igual, te lo digo siempre, ponle las tags de codigo como Linux manda:
code=java