Java - sacar datos del .jar

 
Vista:

sacar datos del .jar

Publicado por Pedro (8 intervenciones) el 10/02/2009 01:34:37
Hola
Estoy programando en netbeans y mi problema es el siguiente:
cuando genero el .jar ¿cómo puedo sacar desde dentro del propio jar un archivo desde codigo java?

Ejemplo

demo.jar (dentro de demo.jar tengo una foto.jpg)

¿¿¿¿que referencia tengo que hacer en el editor de codigo para sacar esa foto del .jar y meterla por ejemplo en c: ????

en concreto es copiar un archivo de una subcarpeta de src y cualquier carpeta o directorio del sistema...una vez se este ejecutando el .jar que se genera....

gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sacar datos del .jar

Publicado por Tom (1831 intervenciones) el 10/02/2009 11:45:18
El .jar es un fichero comprimido con el mismo método que los .zip.
Ábrelo con winzip, o similar y podrás extraer todos los ficheros que contenga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sacar datos del .jar

Publicado por Pedro (8 intervenciones) el 10/02/2009 11:49:20
La cuestion es que los quiero sacar desde codigo java
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sacar datos del .jar

Publicado por webness (57 intervenciones) el 10/02/2009 17:35:10
Pues lo que se me ocurre es que en ves de meterce al jar en tiempo de ejecucion, sacar ficheros y copiarlos a disco, hagas rutinas de manejo de ficheros que tomen los ficheros que tu necesites y que esten dentro de la carpeta dist de tu aplicacion en netbeans y sean copiados a donde tu necesites.

aqui te mando un metodo que hace copias de ficheros, si el fichero de destino no existe lo crea y si si lo reemplaza.

public void copyFile(File src, File dst) throws IOException
{
InputStream input = new FileInputStream(src);
OutputStream output = new FileOutputStream(dst);

byte[] buffer = new byte[1024];
int length;

try
{
while ((length = input.read(buffer)) > 0)
{
output.write(buffer, 0, length);
}
input.close();
output.close();
}catch (Exception ex){JOptionPane.showMessageDialog(null,"Error al copiar los archivos");}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sacar datos del .jar

Publicado por Abel (3 intervenciones) el 28/12/2009 05:51:36
mmmm pues no le entendi mucho a lo k intentas hacer con eso de copiar!!!

mira encontre un codigo en internet para eso pero no logro hacerlo funcionar!!!

//Copia los ficheros del tipo dado del interior del jar al override (true,
// o al directorio
//raiz del torment false.
public static void copiarFicheros(String tipoFichero, boolean alOverride)
throws IOException, FileNotFoundException {
//No se pueden crear objetos File con un jar, es necesario usar las
//Herramientas de la clase ZIPFile y JarFile
//Primero de todo encontramos la ruta donde estar? nuestro
// ficheroJar
//Es una URL
URL rutaDelJar = Encripter.class.getProtectionDomain().getCodeSource().getLocation();

//Segundo, creamos un JarInputStream paera leer el Jar
//El metodo openStream de la clase URL abre un inputStream de esa
// url
JarInputStream inputDelJar = new JarInputStream(rutaDelJar.openStream());
//Leemos la entrada del jar que no es otra cosa que uno de los
// ficheros que hay dentro
JarEntry fichero = inputDelJar.getNextJarEntry();
//Mientras la sigueinte entrada exista miarmos si el nombre es el
// adecuado
//Y si lo es lo copiamos;
while (fichero != null) {
String nombre = fichero.getName();

String rutaACopiar;
//Problema, el getName incluye el tema de los directorios, por lo
// tanto se elimina
String nombreBien = nombre.substring(4);
//Si el fichero es del tipo adecuado
if (nombre.endsWith("." + tipoFichero)) {
//Si tenemos que meterlo al override
//Creamos el pathname del fichero a copiar al override
String rutaPST="";
if (alOverride) {
rutaACopiar = new String(rutaPST + "\\override\\" + nombreBien);
//Si va al principal nada m?s
} else {
rutaACopiar = (rutaPST +"\\"+ nombreBien);
//Creamos un FileOutputStream
}
FileOutputStream ficheroAEscribir = new FileOutputStream(
rutaACopiar);
BufferedOutputStream rapido = new BufferedOutputStream(
ficheroAEscribir);
BufferedInputStream leerRapido = new BufferedInputStream(
inputDelJar);
//Leemos y escribimos el fichero
int v;
while ((v = leerRapido.read()) != -1) {
rapido.write(v);
}
//Aqui hay que poner lo del log
}
//Pasamos al siguiente jarEntry
fichero = inputDelJar.getNextJarEntry();

}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar