Qual é a diferença entre um Recurso, URI, URL, Caminho e Arquivo em Java?
Estou vendo um pedaço de código Java agora, e ele segue um caminho como uma String e obtém sua URL usandoURL resource = ClassLoader.getSystemClassLoader().getResource(pathAsString);
, então chamaString path = resource.getPath()
e finalmente executanew File(path);
.
Ah, e também há chamadas paraURL url = resource.toURI();
eString file = resource.getFile()
.
Estou totalmente confuso agora - principalmente por causa da terminologia, eu acho. Alguém pode me explicar as diferenças ou fornecer alguns links para material à prova de manequim? Especialmente URI para URL eRecurso para arquivo? Para mim, parece que eles devem ser a mesma coisa, respectivamente ...
A diferença entregetFile()
egetPath()
é explicado aqui:Qual é a diferença entre url.getFile () e getpath ()? (Curiosamente, ambos parecem retornar Strings, o que provavelmente adiciona muito ao meu estado de espírito ...)
Agora, se eu tiver um localizador que faça referência a uma classe ou pacote em um arquivo jar, esses dois (ou seja, as seqüências de caracteres de caminho e arquivo) serão diferentes?
resource.toString()
te dariajar:file:/C:/path/to/my.jar!/com/example/
, afinal (observe o ponto de exclamação).
É a diferença entreURI eURL em Java que o primeiro não codifica espaços? Cf.Arquivos, URIs e URLs conflitantes em Java (Esta resposta explica ageral, conceitual diferença entre os dois termos razoavelmente bem:Os URIs identificam e os URLs localizam;)
Por fim - e mais importante -por que eu precisoFile
objeto; por que não é um recurso (URL
) o suficiente? (E existe um objeto Resource?)
Desculpe se esta questão é um pouco desorganizada; apenas reflete a confusão que tenho ... :)