Copiar archivo

topfired2
08 de Mayo del 2006
Tengo un problema con la ruta del fichero cuando es muy larga y con nombres largos.

Esta es la ruta donde esta el archivo del url:

"/N:/tra/ser%20T%c3%a8cos/in%c3%a0tia/Trabajo/Proyectos/nono%c3%a7a%20hola/ia/classes/ia/plantilla/plantilla.xls"

Con el getResource parece que lo coge bien, pero al ir a crear el FileInputStream, la ruta no la encuentra, alguien sabe porque ?

java.net.URL url = ia.Principal.class.getResource("plantilla/plantilla.xls");
Copiar cop = new Copiar();
try {
cop.copia(url.getPath(), directorio + archivo + ".xls");
}
catch (IOException ioe) {
rec.log.error(ioe.getMessage());
}


public static void copia(String nombreFuente, String nombreDestino) throws IOException {
FileInputStream fis = new FileInputStream(nombreFuente);
FileOutputStream fos = new FileOutputStream(nombreDestino);
FileChannel canalFuente = fis.getChannel();
FileChannel canalDestino = fos.getChannel();
canalFuente.transferTo(0, canalFuente.size(), canalDestino);
fis.close();
fos.close();
}

topfired2
08 de Mayo del 2006
Ya encontre la solución, lo copie de otra manera, por si ha alguien le ha pasado, aqui pongo la solución :

java.net.URL url = ia.Principal.class.getResource("plantilla/plantilla.xls");

URLConnection con = url.openConnection();
BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
FileOutputStream out = new FileOutputStream(nombreDestino);
int i = 0;
byte[] bytesIn = new byte[1024];
while ((i = bis.read(bytesIn)) >= 0) {
out.write(bytesIn, 0, i);
}
out.close();
bis.close();