Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2009, 15:19
Avatar de mandrake88
mandrake88
 
Fecha de Ingreso: septiembre-2009
Mensajes: 328
Antigüedad: 15 años, 4 meses
Puntos: 13
Acceso a archivo empaquetado en .jar

Hola:

Tengo el siguiente problema: Mi programa maneja un archivo de configuracion .XML. En caso de que el archivo sea borrado, quiero que el programa cree un archivo default de configuracion.

Para esto cree un archivo configDefault.xml, el cual va a ir empaquetado dentro del .jar. Entonces cuando el programa no encuentre el archivo de configuracion, creeara un nuevo a partir del configDefault.xml que esta empaquetado en el .jar

Para esto implemente el siguiente codigo

try{
FileInputStream fis = new FileInputStream(URLDecoder.decode(getClass().getCl assLoader().getResource("configDefault.xml").getPa th()));
FileOutputStream fos = new FileOutputStream("config.xml");
FileChannel canalFuente = fis.getChannel();
FileChannel canalDestino = fos.getChannel();
canalFuente.transferTo(0, canalFuente.size(), canalDestino);
fis.close();
fos.close();
}catch (IOException ex) { ...}

getClass().getClassLoader().getResource("configDef ault.xml") devuelve un objeto de tipo URL. Al cual le mando el mensaje .getPath() y me devuleve el Path en string, pero me lo devuelve en alguna codificacion rara en la cual los espacios los representa con "%20", asi que aplico URLDecoder.decode(arg) lo cual me convierte ese path a la codificacion standar del sistema operativo.

Cuando hago la prueba en el eclipse, el programa funciona bien. En caso de que no encuentre el archivo de configuracion config.xml, crea un nuevo archivo a partir del configDefault.xml. Pero cuando exporto mi programa en .jar, el archivo no se crea, y se dispara la IOException.