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
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 (http://go2.wordpress.com/?id=725X1342&site=fetishcode.wordpress.com&url=http%3A%2F%2Fwww.javaworld.com%2Fjavaworld%2Fjavatips%2Fjw-javatip120.html) donde se trata este tema con mas profundidad.
Fuente: http://fetishcode.wordpress.com/2007/10/20/extraccion-de-ficheros-desde-jar/
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
:-X
despues de varios intentos creo Que te lo tengo :)
http://jleyer.wordpress.com/2010/07/18/extraer-archivos-de-un-jar-desde-java/
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.
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);
}
}
}
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