自从转投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文件

  文件分布如图所示:               

  

 1     @Test
2 public void testFilePath() throws Exception
3 {
4 // 以class.getResource方法获取文件路径
5 System.out.println("------getFileURL by class.getResource------");
6 URL fileURL = JDBCHelper.class.getResource("1.xml");
7 System.out.println("1.xml Exit? " + isfileExit(fileURL));
8
9 fileURL = JDBCHelper.class.getResource("/2.xml");
10 System.out.println("2.xml Exit? " + isfileExit(fileURL));
11
12 fileURL = JDBCHelper.class.getResource("/config/dbcfg.properties");
13 System.out.println("properties Exit? " + isfileExit(fileURL));
14 System.out.println("------getFileURL by classLoader.getResource------");
15
16 fileURL = JDBCHelper.class.getClassLoader().getResource("com/scl/test/transcaction/1.xml");
17 System.out.println("1.xml Exit? " + isfileExit(fileURL));
18
19 fileURL = JDBCHelper.class.getClassLoader().getResource("2.xml");
20 System.out.println("2.xml Exit? " + isfileExit(fileURL));
21
22 fileURL = JDBCHelper.class.getClassLoader().getResource("config/dbcfg.properties");
23 System.out.println("properties Exit? " + isfileExit(fileURL));
24
25 }
26
27 public boolean isfileExit(URL fileURL) throws Exception
28 {
29 if (fileURL == null) { return false; }
30 String URLStr = URLDecoder.decode(fileURL.getFile(), "utf8");
31 File f = new File(URLStr);
32 if (f != null && f.exists())
33 {
34 f = null;
35 return true;
36 }
37 else
38 {
39 return false;
40 }
41
42 }

结果如下:

【转载】使用Class.getResource和ClassLoader.getResource方法获取文件路径的更多相关文章

  1. 使用Class.getResource和ClassLoader.getResource方法获取文件路径

    自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...

  2. 关于获取资源文件,Class.getResource和ClassLoader.getResource的区别

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-02-22/29.html 作者:夜月归途 出处:http://www.guitu ...

  3. Class.getResource和ClassLoader.getResource的区别分析

    原文:http://swiftlet.net/archives/868 在Java中获取资源的时候,经常用到Class.getResource和ClassLoader.getResource,本文给大 ...

  4. 【JAVA】Class.getResource()与ClassLoader.getResource()的区别

    转载自:https://blog.csdn.net/qq_33591903/article/details/91444342 Class.getResource()与ClassLoader.getRe ...

  5. 关于Class.getResource和ClassLoader.getResource的路径问题

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...

  6. 【转】关于Class.getResource和ClassLoader.getResource的路径问题

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...

  7. (转)关于Class.getResource和ClassLoader.getResource的路径问题

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. 1 Class.getResource(St ...

  8. Class.getResource和ClassLoader.getResource的路径写法

    Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(Stri ...

  9. 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结

    在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...

随机推荐

  1. js中const,var,let区别与用法(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_36784628/article/d ...

  2. 一起入门Python2之python的安装及初识

    鉴于论坛需要持续更新文章才能更好的保证论坛的访问量和质量,以及论坛的发展.承蒙前辈的信任和支持,我就教大家python第二课,教的不好请多担待和指正. 我们先讲python的安装方法: 方法链接:ht ...

  3. Chrome V75V76新版无法存为mhtml格式解决办法

    升级到75.76版本后谷歌浏览器Chrome V75.0.3770.142 V76.0.3809.87新版,发现无法另存为/保存网页为MHTML了.原来chrome搞了个"Chrome Fl ...

  4. React错误收集

    1.  Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/ ...

  5. Qt编写自定义控件70-扁平化flatui

    一.前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产生的质感色彩反 ...

  6. locust设置断言的方法

    https://blog.csdn.net/panyu881024/article/details/80146088 这里同样以测试百度首页为例. catch_response = True :布尔类 ...

  7. Shell中 2>/dev/null

    1.文件描述符 Linux系统预留可三个文件描述符:0.1和2,他们的意义如下所示: 0——标准输入(stdin) 1——标准输出(stdout) 2——标准错误(stderr) 标准输出——stdo ...

  8. 今天被这个BDE错误搞了半天,不过终于好了,分享一下

    今天正编译程序时,突然就报了这个错误出来,重启电脑都没用,多亏网上高手指教,先把解决方案列于下,供受此累得朋友查阅,自己也留底供查找:"Shared memory conflict ($21 ...

  9. 无限级分类,抓取某元素的所有下级id

    mysql> select id,invite_qke_id from tf_qke; +----+---------------+ | id | invite_qke_id | +----+- ...

  10. skynet sproto 问题

    刚碰到一个小细节,纠结了半个小时 sproto的协议,request 和{ 必须有空格