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.