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 ... :)

questionAnswers(5)

yourAnswerToTheQuestion