使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记。主要使用Class及通过ClassLoader来动态获取文件路径。
查阅链接如下: Class及ClassLoader下获取Resource原理
Class及ClassLoader下获取Resource图文解析
首先,在IDE下面写的.java文件最终会被编译成一个.class的类。上面两种方法去读取文件都是基于.class的相对路径进行索引。

通过Class和ClassLoader两个类下的Resource方法获取路径主要区别是参数是否以"/"开头。
1. 通过Class.getResource方法获取文件路径
△getResource方法
(1) getResource方法必须输入参数,该方法没有提供空参数的方法重载,因此该方法必须输入参数。
(2) Class.getResource("")与Class.getResource("/") 的主要区别:空字符串下对应返回class文件所在包的位置,"/"参数返回的是class文件所在的根目录(所在包的上级目录)

2. 通过ClassLoader.getResource方法获取文件路径
ClassLoader.getResource方法同样带有一个String 类型的目录参数,但ClassLoader.getResource方法参数不支持参数为"/",因为该实例方法返回的就是类所在的根目录路径。输入带"/"开头的字符串,会返回null。

3. 示例以JDBCHelper类,分别获取1.xml,2.xml 及dbcfg.properties文件
文件分布如图所示: 
@Test
public void testFilePath() throws Exception
{
// 以class.getResource方法获取文件路径
System.out.println("------getFileURL by class.getResource------");
URL fileURL = JDBCHelper.class.getResource("1.xml");
System.out.println("1.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getResource("/2.xml");
System.out.println("2.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getResource("/config/dbcfg.properties");
System.out.println("properties Exit? " + isfileExit(fileURL));
System.out.println("------getFileURL by classLoader.getResource------"); fileURL = JDBCHelper.class.getClassLoader().getResource("com/scl/test/transcaction/1.xml");
System.out.println("1.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getClassLoader().getResource("2.xml");
System.out.println("2.xml Exit? " + isfileExit(fileURL)); fileURL = JDBCHelper.class.getClassLoader().getResource("config/dbcfg.properties");
System.out.println("properties Exit? " + isfileExit(fileURL)); } public boolean isfileExit(URL fileURL) throws Exception
{
if (fileURL == null) { return false; }
String URLStr = URLDecoder.decode(fileURL.getFile(), "utf8");
File f = new File(URLStr);
if (f != null && f.exists())
{
f = null;
return true;
}
else
{
return false;
} }
结果如下:

以上为getResource方法的总结,看来基础还是得加强
使用Class.getResource和ClassLoader.getResource方法获取文件路径的更多相关文章
- 【转载】使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- 关于获取资源文件,Class.getResource和ClassLoader.getResource的区别
原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-02-22/29.html 作者:夜月归途 出处:http://www.guitu ...
- Class.getResource和ClassLoader.getResource的区别分析
原文:http://swiftlet.net/archives/868 在Java中获取资源的时候,经常用到Class.getResource和ClassLoader.getResource,本文给大 ...
- 关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- 【转】关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- (转)关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. 1 Class.getResource(St ...
- 【JAVA】Class.getResource()与ClassLoader.getResource()的区别
转载自:https://blog.csdn.net/qq_33591903/article/details/91444342 Class.getResource()与ClassLoader.getRe ...
- Class.getResource和ClassLoader.getResource的路径写法
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...
- Android中获取文件路径的方法总结及对照
最近在写文件存贮,Android中获取文件路径的方法比较多,所以自己也很混乱.找了好几篇博客,发现了以下的路径归纳,记录一下,以备不时之需 Environment.getDataDirectory() ...
随机推荐
- CentOS6.2下安装eclipse
在eclipse官网下载eclipse的linux版本(此处省略下载过程),我下载的是eclipse-jee-indigo-SR2-linux-gtk.tar.gz,下面是安装过程: 1.sudo ...
- C++容器类的简介
C++容器类的简介 一.原型与构造函数 Vector的原型可定义为 vector<T, allocator <T> > 其构造函数为 vector() ...
- 【转】bt协议的详细分析
转自:https://baoz.net/bt-protocol/ 一 BT系统的组成结构 1 普通的Web服务器: 例如Apache或IIS服务器 2 一个静态的种子文件: 即. ...
- Windows下配置PHP支持LDAP扩展方法(wampserver)
在网上搜了好多文章都不行呢,大都是没有开启扩展的问题,可是我的是开启的. 终于看到一篇文章,因为我用的是wampserver.下面是文章原话: 然后你发现上面的提示依旧,因为这是网上大多能查到的资料的 ...
- JS字符处理
JS取整 1.toFixed(num)(ps:num为保留小数点后几位) 自定义保留小数点后几位,进行四舍五入.严格来说,这个函数不属于取整,但是当num=0时,也就是取整了,所以一起放到这里,方便查 ...
- unity3d NGUI多场景共用界面制作
1创建单独编辑UI的unity场景 UIScene.unity 用来做UI面界 ,创建Resources文件存放UI界面的prefab,代码里动态load资源仅仅能从Resources目录载入 2创建 ...
- el表达式跟ognl表达式的区别(转)
EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application.>>如果在struts环境中,它除了有在上面的 ...
- 应聘.net开发工程师常见的面试题(一)(转载)
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
- C#_dropdownlist_2
string deptId =Request.Form["depts"].Trim(); Html.DropDownList()赋默认值: 页面代码如下: <% ...
- Conclusion
Conclusion This concludes our brief look at building a simple, but fully functional, Zend Framework ...