• 使用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文件

      文件分布如图所示:               

      

     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     }
    View Code

     结果如下:

                        

       以上为getResource方法的总结,看来基础还是得加强 

  • 相关阅读:
    读书笔记
    JavaScript
    Vue
    读书笔记
    Python
    Python
    概率论07 联合分布
    概率论06 连续分布
    概率论05 离散分布
    概率论04 随机变量
  • 原文地址:https://www.cnblogs.com/doucheyard/p/5650294.html
Copyright © 2020-2023  润新知