2010-09-08 15 views
21

tengo una URL:cómo obtener la URL utilizando la ruta relativa

URL url=new URL("http://www.abc.com/aa/bb/cc/file.html"); 

y una ruta relativa:

String relativePath="../file2.html"; //maybe is "/file3.html" 

quiero conseguir http://www.abc.com/aa/bb/file2.html mediante la variable url y relativePath

Cómo ¿hazlo?

Respuesta

47
new URL(url, relativePath); 
+1

+1. Más detalles sobre la API de Java: http://download.oracle.com/javase/6/docs/api/java/net/URL.html –

+0

gracias pero está solo en el JDK6 :( – Koerr

+0

No, el método existe desde 1.0 Aquí está al menos el documento de 1.3 (no se pudo encontrar 1.0;). Http://download.oracle.com/javase/1.3/docs/api/java/net/URL.html#URL%28java.net.URL, % 20java.lang.String% 29 – Arne

9

intenta realizar una operación winth la clase URI en lugar de la URL.

Para obtener el URI de su URL:

java.net.URI anURI=url.toUri(); 

Entonces, para resolver el URI relativo:

URI resultURI=anURI.resolve(relativePath); 

Y por último, para obtener un tipo de URL utilización de método toUrl() de la variable de resultado URI, y la tienes.

+5

¿Por qué es mejor usar URI que URL? – sixtyfootersdude

7

Si usted quiere construir una URL que apunta a un archivo relativo, puede utilizar:

URL url = new URL(new URL("file:"), "./myLocalFile.txt"); 
2

Cuando la construcción de URL relativa, tenga en cuenta que la base es camino hacia paquete actual, no presentar. Es decir: el archivo árbitro está en .../myProject/src/pckg/javafile.java y el archivo referated está en .../myProject/some-other/nice.file, entonces la referencia relativa debe tener este aspecto:

URL url = new URL(new URL("file:"), "./../some-other/nice.file"); 

y esto funciona para mí también:

URL url = new URL("file:./../some-other/nice.file"); 
-1

Esto funcionó para mi código
URL url=Myclass.class.getResource("/com/fnf/si/DepAcctInq_V02.wsdl");

Cuestiones relacionadas