Allerdings möchten Sie wahrscheinlich eine bekommen URI. ZB URIbeginnt ein mit, file:///aber eine URL mit file:/(zumindest ist es das, was toStringproduziert).
"... ein URI beginnt mit file: ///, aber eine URL mit file: / ..." Ist das sowohl für Windows als auch für Linux der Fall?
Ptntialunrlsd
@ptntialunrlsd Das ist eine gute Frage. Ich habe nicht überprüft, aber ich würde ja raten.
Aleksandr Dubinsky
6
Nein. Eine URL ist nur ein Sonderfall einer URI. Ein Datei-URI beginnt mit "file: //" und listet dann den Host (im Allgemeinen weggelassen) auf, gefolgt von "/" und dem Pfad "foo / bar" (im Allgemeinen als absoluter Pfad zu lesen). Also "file: /// foo / var". Ein URI, der wie "file: / foo / bar" aussieht, ist falsch. Siehe auch: Datei-URI-Schema
David Tonhofer
@DavidTonhofer Vielen Dank für die Erklärung der URIs, aber das beantwortet die Frage von ptntialunrlsd nicht . Was produziert '... toURL (). ToString ()' unter Linux? Außerdem habe ich Ihre Änderungen rückgängig gemacht, weil sie meine Antwort wortreicher gemacht haben, ohne die Bedeutung zu ändern.
Aleksandr Dubinsky
3
@AleksandrDubinsky Es ist jedoch am besten, Zeiger auf das Oracle-Javadoc zu belassen java.nio.file.Paths. Stellen Sie außerdem sicher, dass Sie die Implementierungen in "URI vs URL" meinen . Anway java.net.URL.toString()produziert unter Unix dasselbe, wie es sein muss. Es wird nur ein "/" angezeigt, was sehr falsch ist (siehe Datei-URI-Schema ). Ich denke, dies ist in Java aus Gründen, besser zu nutzen java.net.URI. Bei einem Aufruf von wird "file: // [host] /" korrekt generiert .toString().
Wo /your/file/hereist ein absoluter Pfad zu einer Datei unter Unix / Linux. Unter Windows wäre das anders, denke ich.
Robin Green
5
Das ist nicht sehr klug, da Sie das Entkommen von Zeichen, die in URLs nicht erlaubt sind, selbst handhaben müssen. Unter Windows (und möglicherweise anderen Betriebssystemen) müssen Sie auch das Pfadtrennzeichen vom nativen Pfad zur Datei ändern.
Jarnbjo
new URL("file:my.properties");
Weberjn
Dies ist zwar korrekt, aber nicht portierbar, da es von absoluten Pfaden abhängt.
Schauen Sie sich hier die vollständige Syntax an: http://en.wikipedia.org/wiki/File_URI_scheme
für Unix-ähnliche Systeme wird es so sein, wie @Alex sagte, file:///your/file/herewährend es für Windows-Systeme sein würdefile:///c|/path/to/file
Mach das nicht manuell. File.toURI().toURL()ist der richtige Weg
Sean Patrick Floyd
3
@ SeanPatrickFloyd Manchmal haben Sie keine Wahl, wie wenn es in einer .propertiesDatei ist.
Schlitten
@ArtB Ich sehe nicht, wie das einen Unterschied macht
Sean Patrick Floyd
2
@SeanPatrickFloyd, diese Frage / Antwort wird bei der Suche angezeigt. java file urlIn meinem Fall bedeutet dies, dass ich nach dem Format einer file://URL in Java gesucht habe , um sie in einer .propertiesDatei zu verwenden oder manuell
einzugeben
1
@ SeanPatrickFloyd Manchmal hat man keinen Zugriff auf den Quellcode, nur auf die Eigenschaft, und file://ist leider notwendig. Systemabhängigkeit ist kein so großes Problem, da es sich um eine veränderbare Eigenschaft handelt.
Verwenden von Java 7:
Allerdings möchten Sie wahrscheinlich eine bekommen
URI
. ZBURI
beginnt ein mit,file:///
aber eine URL mitfile:/
(zumindest ist es das, wastoString
produziert).quelle
java.nio.file.Paths
. Stellen Sie außerdem sicher, dass Sie die Implementierungen in "URI vs URL" meinen . Anwayjava.net.URL.toString()
produziert unter Unix dasselbe, wie es sein muss. Es wird nur ein "/" angezeigt, was sehr falsch ist (siehe Datei-URI-Schema ). Ich denke, dies ist in Java aus Gründen, besser zu nutzenjava.net.URI
. Bei einem Aufruf von wird "file: // [host] /" korrekt generiert.toString()
.quelle
quelle
/your/file/here
ist ein absoluter Pfad zu einer Datei unter Unix / Linux. Unter Windows wäre das anders, denke ich.new URL("file:my.properties");
quelle
Schauen Sie sich hier die vollständige Syntax an: http://en.wikipedia.org/wiki/File_URI_scheme für Unix-ähnliche Systeme wird es so sein, wie @Alex sagte,
file:///your/file/here
während es für Windows-Systeme sein würdefile:///c|/path/to/file
quelle
File.toURI().toURL()
ist der richtige Weg.properties
Datei ist.java file url
In meinem Fall bedeutet dies, dass ich nach dem Format einerfile://
URL in Java gesucht habe , um sie in einer.properties
Datei zu verwenden oder manuellfile://
ist leider notwendig. Systemabhängigkeit ist kein so großes Problem, da es sich um eine veränderbare Eigenschaft handelt.Sie können auch verwenden
quelle
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.