Sin embargo, probablemente quieras obtener un URI. Por ejemplo, a URIcomienza con file:///pero una URL con file:/(al menos, eso es lo que toStringproduce).
"... un URI comienza con el archivo: /// pero una URL con el archivo: / ..." ¿Es ese el caso tanto para Windows como para Linux?
ptntialunrlsd
@ptntialunrlsd Esa es una buena pregunta. No lo he comprobado, pero supongo que sí.
Aleksandr Dubinsky
77
No. Una URL es solo un caso especial de un URI. Un URI de archivo comienza con "file: //" y luego enumera el host (generalmente omitido), seguido de "/" y la ruta "foo / bar" (generalmente destinada a leerse como una ruta absoluta). Así "file: /// foo / var". Un URI que se parece a "file: / foo / bar" es incorrecto. Ver también: esquema de URI de archivo
David Tonhofer
@DavidTonhofer Gracias por la explicación de los URI, pero eso no responde a la pregunta de ptntialunrlsd . ¿Qué produce '... toURL (). ToString ()' en Linux? Además, he revertido sus ediciones porque hicieron que mi respuesta fuera más prolija sin cambiar el significado.
Aleksandr Dubinsky
3
@AleksandrDubinsky Sin embargo, es mejor dejar punteros al javadoc de Oracle ... más fácil de hacer clic java.nio.file.Paths. Además, asegúrese de dejar en claro que se refiere a las implementaciones en "URI vs URL". Anway java.net.URL.toString()produce lo mismo en Unix, como debe ser. Solo muestra un "/" que está muy mal (ver esquema de URI de archivo ). Supongo que esto está en Java por razones, mejor uso java.net.URI. Genera correctamente "file: // [host] /" en una llamada a .toString().
donde /your/file/herees una ruta absoluta a un archivo en Unix / Linux. En Windows sería diferente, creo.
Robin Green
55
Eso no es muy inteligente, ya que debe manejar el escape de caracteres que no están permitidos en las URL usted mismo. En Windows (y potencialmente en otros sistemas operativos), también debe modificar el separador de ruta de la ruta nativa al archivo.
jarnbjo
new URL("file:my.properties");
weberjn
Si bien esto es correcto, no es portátil, ya que depende de rutas absolutas.
eche un vistazo aquí para ver la sintaxis completa: http://en.wikipedia.org/wiki/File_URI_scheme
para sistemas tipo UNIX, será como dijo @Alex, file:///your/file/heremientras que para sistemas Windows seríafile:///c|/path/to/file
No hagas eso manualmente. File.toURI().toURL()es el camino a seguir
Sean Patrick Floyd
3
@SeanPatrickFloyd a veces no tienes otra opción, como cuando está en un .propertiesarchivo.
Trineo
@ArtB No veo cómo eso marca la diferencia
Sean Patrick Floyd
2
@SeanPatrickFloyd, esta pregunta / respuesta aparece cuando busca java file url, lo que en mi caso significa que estaba buscando el formato de una file://URL, en Java, para usar en un .propertiesarchivo, o para escribir manualmente, etc.
daveloyall
1
@SeanPatrickFloyd a veces no tiene acceso al código fuente, solo a la propiedad, y file://desafortunadamente es necesario. Ser dependiente del sistema no es un problema tan grande ya que es una propiedad mutable.
Usando Java 7:
Sin embargo, probablemente quieras obtener un
URI
. Por ejemplo, aURI
comienza confile:///
pero una URL confile:/
(al menos, eso es lo quetoString
produce).fuente
java.nio.file.Paths
. Además, asegúrese de dejar en claro que se refiere a las implementaciones en "URI vs URL". Anwayjava.net.URL.toString()
produce lo mismo en Unix, como debe ser. Solo muestra un "/" que está muy mal (ver esquema de URI de archivo ). Supongo que esto está en Java por razones, mejor usojava.net.URI
. Genera correctamente "file: // [host] /" en una llamada a.toString()
.fuente
fuente
/your/file/here
es una ruta absoluta a un archivo en Unix / Linux. En Windows sería diferente, creo.new URL("file:my.properties");
fuente
eche un vistazo aquí para ver la sintaxis completa: http://en.wikipedia.org/wiki/File_URI_scheme para sistemas tipo UNIX, será como dijo @Alex,
file:///your/file/here
mientras que para sistemas Windows seríafile:///c|/path/to/file
fuente
File.toURI().toURL()
es el camino a seguir.properties
archivo.java file url
, lo que en mi caso significa que estaba buscando el formato de unafile://
URL, en Java, para usar en un.properties
archivo, o para escribir manualmente, etc.file://
desafortunadamente es necesario. Ser dependiente del sistema no es un problema tan grande ya que es una propiedad mutable.También puedes usar
fuente
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.