美文网首页
Class类getResource方法获取文件路径

Class类getResource方法获取文件路径

作者: 联想桥南 | 来源:发表于2017-12-17 19:12 被阅读0次

在应用程序中,经常有需求获取资源文件的路径,并加载之。
其中一个方法就是使用绝对路径,比如:

File file = new File("D://xxxx");

但是不支持跨系统,linux上是不用C盘D盘的。
要做到像JVM一样牛逼,跨系统实现,需要使用绝对路径。

Class类提供的getResource方法就可以实现此功能。下边梳理下getResource使用时的一些情况:

path不以’/'开头时,默认是从此类所在的包下取资源;
path 以’/'开头时,则是从ClassPath根下获取;

classPath是指编译后字节码所放的路径,比如web项目,src不是classpath, WEB-INF/classes,lib才是classpath

image.png

如截图中的例子,一个打印了当前类文件的包路径。一个打印了classPath所在的包路径。
例子中举例资源文件A,B,C查找的方法。

TestSource.class.getResource("A.conf");
TestSource.class.getResource("/B.conf");
TestSource.class.getResource("/com/lxqn/jiapeng/threadPool/C.conf");

Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的。后者返回的是流,方便封装工具类处理。

Class.getClassLoader().getResource使用

path不能以’/'开头时;
path是从ClassPath根下获取;

从结果上看TestSource.class.getResource("/") == TestSource.class.getClassLoader().getResource("") 等效的
所以上述A,B,C的资源获取,可以写成如下:

 TestSource.class.getClassLoader().getResource("com/lxqn/jiapeng/reflect/A.conf");
 TestSource.class.getClassLoader().getResource("B.conf");
 TestSource.class.getClassLoader().getResource("com/lxqn/jiapeng/threadPool/C.conf");
image.png

参考博文:
https://www.cnblogs.com/yejg1212/p/3270152.html
http://blog.csdn.net/javaloveiphone/article/details/51994268

相关文章

网友评论

      本文标题:Class类getResource方法获取文件路径

      本文链接:https://www.haomeiwen.com/subject/cdluwxtx.html