类名.class.getResource(String path)
path不以’/'开头时,默认是从此类所在的包下取资源;
path 以’/'开头时,则是从ClassPath根下获取;
- FileTest.class.getResource("")
得到的是当前类FileTest.class文件的URI目录(当前包的路径)。不包括自己!
如:file:/D:/test/bin/com/test/ - FileTest.class.getResource("/")
得到的是当前的classpath的绝对URI路径。
如:file:/D:/test/bin/
类名.class.getClassLoader().getResource(String path)
path不能以’/'开头;
path是从ClassPath根下获取;
-
FileTest.class.getClassLoader().getResource("")
得到的是classpath的绝对URI路径。
如:file:/D:/test/bin/ -
ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径。
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
Thread.currentThread().getContextClassLoader().getResource("")
得到的是当前classpath的绝对URI路径。
如:file:/D:/test/bin/
以上全部方法获得的都是URL,而不是字符串,如果要获得字符串表示的路径,必须转换
推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。
本文详细解析了Java中不同方式加载资源的机制,包括类名.class.getResource,类名.class.getClassLoader().getResource,ClassLoader.getSystemResource及Thread.currentThread().getContextClassLoader().getResource的使用方法与区别,深入探讨了它们如何从不同的起点获取资源路径。

172

被折叠的 条评论
为什么被折叠?



