Cependant, vous souhaitez probablement obtenir un fichier URI. Par exemple, a URIcommence par file:///mais une URL avec file:/(du moins, c'est ce qui toStringproduit).
"... un URI commence par file: /// mais une URL avec file: / ..." Est-ce le cas pour Windows et Linux?
ptntialunrlsd
@ptntialunrlsd C'est une bonne question. Je n'ai pas vérifié, mais je suppose que oui.
Aleksandr Dubinsky
7
Non. Une URL n'est qu'un cas particulier d'URI. Un URI de fichier commence par "file: //" puis répertorie l'hôte (généralement omis), suivi de "/" et du chemin "foo / bar" (généralement destiné à être lu comme un chemin absolu). Ainsi "file: /// foo / var". Un URI qui ressemble à "file: / foo / bar" est incorrect. Voir aussi: schéma d'URI de fichier
David Tonhofer
@DavidTonhofer Merci pour l'explication des URI, mais cela ne répond pas à la question de ptntialunrlsd . Que produit '... toURL (). ToString ()' sous Linux? De plus, j'ai annulé vos modifications car elles ont rendu ma réponse plus verbeuse sans en changer le sens.
Aleksandr Dubinsky
3
@AleksandrDubinsky Il est préférable de laisser les pointeurs vers le javadoc Oracle, cependant ... plus facile à cliquer java.nio.file.Paths. Assurez-vous également de bien préciser que vous faites référence aux implémentations dans "URI vs URL". Anway java.net.URL.toString()produit la même chose sous Unix, comme il se doit. Il n'affiche qu'un seul "/", ce qui est très faux (voir le schéma URI du fichier ). Je suppose que c'est en Java pour des raisons, une meilleure utilisation java.net.URI. Il génère correctement "file: // [hôte] /" lors d'un appel à .toString().
où /your/file/hereest un chemin absolu vers un fichier sous Unix / Linux. Sur Windows, ce serait différent je pense.
Robin Green
5
Ce n'est pas très intelligent, car vous devez gérer vous-même l'échappement des caractères qui ne sont pas autorisés dans les URL. Sous Windows (et potentiellement d'autres systèmes d'exploitation), vous devez également modifier le séparateur de chemin du chemin natif vers le fichier.
jarnbjo
new URL("file:my.properties");
weberjn
Bien que cela soit correct, il n'est pas portable car il dépend de chemins absolus.
regardez ici la syntaxe complète: http://en.wikipedia.org/wiki/File_URI_scheme
pour les systèmes de type Unix, ce sera comme @Alex l'a dit file:///your/file/herealors que pour les systèmes Windowsfile:///c|/path/to/file
Ne faites pas cela manuellement. File.toURI().toURL()c'est la voie à suivre
Sean Patrick Floyd
3
@SeanPatrickFloyd parfois vous n'avez pas le choix, comme quand c'est dans un .propertiesfichier.
Traîneau
@ArtB Je ne vois pas en quoi cela fait une différence
Sean Patrick Floyd
2
@SeanPatrickFloyd, cette question / réponse apparaît lorsque vous recherchez java file url, ce qui signifie dans mon cas que je recherchais le format d'une file://URL, en Java, à utiliser dans un .propertiesfichier, ou à taper manuellement, etc.
daveloyall
1
@SeanPatrickFloyd parfois vous n'avez pas accès au code source, juste à la propriété, et file://c'est malheureusement nécessaire. Être dépendant du système n'est pas un si gros problème car c'est une propriété mutable.
Utilisation de Java 7:
Cependant, vous souhaitez probablement obtenir un fichier
URI
. Par exemple, aURI
commence parfile:///
mais une URL avecfile:/
(du moins, c'est ce quitoString
produit).la source
java.nio.file.Paths
. Assurez-vous également de bien préciser que vous faites référence aux implémentations dans "URI vs URL". Anwayjava.net.URL.toString()
produit la même chose sous Unix, comme il se doit. Il n'affiche qu'un seul "/", ce qui est très faux (voir le schéma URI du fichier ). Je suppose que c'est en Java pour des raisons, une meilleure utilisationjava.net.URI
. Il génère correctement "file: // [hôte] /" lors d'un appel à.toString()
.la source
la source
/your/file/here
est un chemin absolu vers un fichier sous Unix / Linux. Sur Windows, ce serait différent je pense.new URL("file:my.properties");
la source
regardez ici la syntaxe complète: http://en.wikipedia.org/wiki/File_URI_scheme pour les systèmes de type Unix, ce sera comme @Alex l'a dit
file:///your/file/here
alors que pour les systèmes Windowsfile:///c|/path/to/file
la source
File.toURI().toURL()
c'est la voie à suivre.properties
fichier.java file url
, ce qui signifie dans mon cas que je recherchais le format d'unefile://
URL, en Java, à utiliser dans un.properties
fichier, ou à taper manuellement, etc.file://
c'est malheureusement nécessaire. Être dépendant du système n'est pas un si gros problème car c'est une propriété mutable.Vous pouvez aussi utiliser
la source
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.