Java getResource() 意外路径

KiK*_*Mak 4 java

我想要以下形式的资源 url

C:/Users/.../build/classes/jam/lena1.png

为了实现这一点,我编写了以下代码

System.out.println(getClass().getResource("lena1.png").getPath());
Run Code Online (Sandbox Code Playgroud)

但它返回

/C:/Users/.../build/classes/jam/lena1.png

为什么 url 前面会出现额外的正斜杠?

Lit*_*nti 5

考虑到 Class.getResource() 返回一个URL,并且URL不仅仅是文件路径:URL 涉及协议、主机、端口和路径。它有自己的符号和格式。

根据RFC2396,您在示例中获得的是URL 的路径部分,并且路径始终以斜杠开头。

如果您想从 URL 获取文件,则可以使用new File(url.toURI())... 假设输入 URL 实际上引用本地文件路径。

  • 但有一个小问题,这个方法返回带有反斜杠的路径 (2认同)