zoukankan      html  css  js  c++  java
  • 获取xml配置文件(路径问题)

    工具类

    package cn.xydata.util;

    import java.io.InputStream;
    import java.util.Properties;

    public class PropertiesUtil {

    /**
    * 根据key获取value
    * @param key
    * @return
    */
    public static String getValue(String key){
    try {
    InputStream in = PropertiesUtil.class.getClassLoader().getResourceAsStream("config.properties");//读取xml部分
    Properties properties = new Properties();
    properties.load(in);
    String value = properties.getProperty(key)==null?"":properties.getProperty(key).toString();
    return value;
    } catch (Exception e) {
    return "";
    }
    }
    }

    ------------------------------------------------------------------------------------------------------------------------------------------------

    测试代码

    String logoPathDir = PropertiesUtil.getValue("personImageURL");
    ------------------------------------------------------------------------------------------------------------------------------

    config.properties配置文件
    uploadResultFileDirs= e://
    uploadFileDirs=e://
    QRPath=e://
    BoxPath=E://BoxQR//
    photoURL=G://ots//img//photo//
    fileURL=d://ots//file//
    defaultPassword = 111111
    personImageURL = G://ots//img//person//
    personDownloadImageURL = G://ots//img//downloadperson//
    apiURL=http://localhost:8080/
    ----------------------------------------------------------------------------------------------------------------------

     

     

     

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

    在Java中获取资源的时候,经常用到Class.getResource和ClassLoader.getResource,本文给大家说一下这两者方法在获取资源文件的路径差异。
    Class.getResource(String path)
    path不以'/'开头时,默认是从此类所在的包下取资源;path以'/'开头时,则是从项目的ClassPath根下获取资源。在这里'/'表示ClassPath
    JDK设置这样的规则,是很好理解的,path不以'/'开头时,我们就能获取与当前类所在的路径相同的资源文件,而以'/'开头时可以获取ClassPath根下任意路径的资源。
    如下所示的例子:

    运行结果为:
    file:/D:/work_space/java/bin/net/swiftlet/
    file:/D:/work_space/java/bin/

    Class.getClassLoader().getResource(String path)
    path不能以'/'开头时,path是指类加载器的加载范围,在资源加载的过程中,使用的逐级向上委托的形式加载的,'/'表示Boot ClassLoader中的加载范围,因为这个类加载器是C++实现的,所以加载范围为null。如下所示:

    运行结果为:
    file:/D:/work_space/java/bin/
    null
    从上面可以看出:
    class.getResource("/") == class.getClassLoader().getResource("")
    其实,Class.getResource和ClassLoader.getResource本质上是一样的,都是使用ClassLoader.getResource加载资源的。下面请看一下jdk的Class源码:

    从上面就可以看才出来:Class.getResource和ClassLoader.getResource本质上是一样的。至于为什么Class.getResource(String path)中path可以'/'开头,是因为在name = resolveName(name);进行了处理:

     

    声明: 本文由金丝燕网原创编译,转载请保留链接: Class.getResource和ClassLoader.getResource的区别分析,更多交流请加群:278721352

    当能力支撑不了野心时,就该静下心来学习!
  • 相关阅读:
    LeetCode Array Easy 414. Third Maximum Number
    LeetCode Linked List Medium 2. Add Two Numbers
    LeetCode Array Easy 283. Move Zeroes
    LeetCode Array Easy 268. Missing Number
    LeetCode Array Easy 219. Contains Duplicate II
    LeetCode Array Easy 217. Contains Duplicate
    LeetCode Array Easy 189. Rotate Array
    LeetCode Array Easy169. Majority Element
    LeetCode Array Medium 11. Container With Most Water
    LeetCode Array Easy 167. Two Sum II
  • 原文地址:https://www.cnblogs.com/1234cjq/p/7590789.html
Copyright © 2011-2022 走看看