Recibo una URL que localiza un archivo local (el hecho de que reciba una URL no está bajo mi control). La URL se escapó válidamente como se define en RFC2396. ¿Cómo puedo transformar esto en un objeto de archivo Java?Java: ¿cómo obtener un archivo de una URL escapada?
Curiosamente, el método URL getFile() devuelve una Cadena, no un Archivo.
He creado un directorio llamado "/ tmp/some dir" (con un espaciado entre "algunos" y "dir"), que se encuentra correctamente en la siguiente URL: "file: /// tmp/some% 20dir "(se agregaron citas para mayor claridad).
¿Cómo puedo convertir esa URL a un archivo Java?
para dar más detalles acerca de mi problema, las siguientes impresiones falsas:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile());
System.out.println("Does dir exist? " + f.exists());
Aunque la siguiente (en sustitución de forma manual "% 20" con un espacio) imprime cierto:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile().replaceAll("%20", " "));
System.out.println("Does dir exist? " + f.exists());
Tenga en cuenta que No estoy pidiendo por qué el primer ejemplo imprime falso por qué el segundo ejemplo usando mi hacky replaceAll imprime cierto, estoy preguntando ho w para convertir una URL escapada en un objeto de archivo Java.
EDITAR: gracias de todo, esto era casi una víctima, pero no exactamente.
Estúpidamente estaba buscando un método de ayuda dentro de la propia clase de URL.
Los siguientes trabajos como era de esperar para obtener un archivo Java desde una URL de Java:
URL url = new URL("file:///home/nonet/some%20dir");
File f = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
Consulte también http://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html para obtener una advertencia. – Vadzim