"... um URI começa com o arquivo: /// mas uma URL com o arquivo: / ..." Esse é o caso do Windows e do Linux?
ptntialunrlsd
@ptntialunrlsd Essa é uma boa pergunta. Eu não verifiquei, mas acho que sim.
Aleksandr Dubinsky
7
Não. Um URL é apenas um caso especial de um URI. Um URI de arquivo começa com "file: //" e lista o host (geralmente omitido), seguido por "/" e o caminho "foo / bar" (geralmente destinado a ser lido como um caminho absoluto). Assim, "file: /// foo / var". Um URI que se parece com "file: / foo / bar" está incorreto. Veja também: esquema de URI de arquivo
David Tonhofer 2/15/15
@DavidTonhofer Obrigado pela explicação dos URIs, mas isso não responde à pergunta de ptntialunrlsd . O que '... toURL (). ToString ()' produz no Linux? Além disso, reverti suas edições porque elas tornaram minha resposta mais prolífica sem alterar o significado.
Aleksandr Dubinsky
3
@AleksandrDubinsky É melhor deixar os ponteiros para o javadoc do Oracle, no entanto .. mais fácil clicar para java.nio.file.Paths. Além disso, certifique-se de deixar claro que você quer dizer as implementações em "URI vs URL". Anway java.net.URL.toString()produz a mesma coisa no Unix, como deve. Ele exibe apenas um "/" muito errado (consulte o esquema de URI do arquivo ). Eu acho que isso é em Java por razões, melhor uso java.net.URI. Ele gera corretamente "file: // [host] /" em uma chamada para .toString().
onde /your/file/hereé um caminho absoluto para um arquivo no Unix / Linux. No Windows, seria diferente, eu acho.
Robin Green
5
Isso não é muito inteligente, pois você precisa lidar com a fuga de caracteres que não são permitidos nos URLs. No Windows (e potencialmente em outros sistemas operacionais), você também precisa modificar o separador de caminho do caminho nativo para o arquivo.
23411 jarnbjo
new URL("file:my.properties");
Weberjn #
Enquanto isso estiver correto, não é portátil, pois depende de caminhos absolutos.
veja aqui a sintaxe completa: http://en.wikipedia.org/wiki/File_URI_scheme
para sistemas unix, será como o @Alex disse, file:///your/file/hereenquanto que para sistemas Windows seriafile:///c|/path/to/file
Não faça isso manualmente. File.toURI().toURL()é o caminho a percorrer
Sean Patrick Floyd
3
@SeanPatrickFloyd às vezes você não tem escolha, como quando está em um .propertiesarquivo.
Trenó
@ArtB Não vejo como isso faz diferença #
Sean Patrick Floyd
2
@SeanPatrickFloyd, esta pergunta / resposta aparece quando você pesquisa java file url, o que, no meu caso, significa que eu estava pesquisando o formato de uma file://URL, em Java, para uso em um .propertiesarquivo ou para digitar manualmente etc.
daveloyall
1
@SeanPatrickFloyd às vezes você não tem acesso ao código fonte, apenas à propriedade, e file://infelizmente é necessário. Ser dependente do sistema não é um problema tão grande, pois é uma propriedade mutável.
Usando o Java 7:
No entanto, você provavelmente deseja obter um
URI
. Por exemplo, aURI
começa comfile:///
mas um URL comfile:/
(pelo menos, é o quetoString
produz).fonte
java.nio.file.Paths
. Além disso, certifique-se de deixar claro que você quer dizer as implementações em "URI vs URL". Anwayjava.net.URL.toString()
produz a mesma coisa no Unix, como deve. Ele exibe apenas um "/" muito errado (consulte o esquema de URI do arquivo ). Eu acho que isso é em Java por razões, melhor usojava.net.URI
. Ele gera corretamente "file: // [host] /" em uma chamada para.toString()
.fonte
fonte
/your/file/here
é um caminho absoluto para um arquivo no Unix / Linux. No Windows, seria diferente, eu acho.new URL("file:my.properties");
fonte
veja aqui a sintaxe completa: http://en.wikipedia.org/wiki/File_URI_scheme para sistemas unix, será como o @Alex disse,
file:///your/file/here
enquanto que para sistemas Windows seriafile:///c|/path/to/file
fonte
File.toURI().toURL()
é o caminho a percorrer.properties
arquivo.java file url
, o que, no meu caso, significa que eu estava pesquisando o formato de umafile://
URL, em Java, para uso em um.properties
arquivo ou para digitar manualmente etc.file://
infelizmente é necessário. Ser dependente do sistema não é um problema tão grande, pois é uma propriedade mutável.Você também pode usar
fonte
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.