加載文件

ClassLoader().getResource (String path)java

 path爲相對ClassPath的路徑,從ClassPath根下獲取,不能以「/」開頭。this

//ClassLoader 獲取方式  
//1.經過當前線程獲取ClassLoader  
ClassLoader classLoader1 = Thread.currentThread().getContextClassLoader();  
//2.經過類獲取ClassLoader  
ClassLoader classLoader2 = ClassLoaderTest.class.getClassLoader();

Class.getResource(String path)spa

    path不以"/"開頭時,默認是今後類包下獲取資源,即相對此類所在包的路徑;線程

    path以"/"開頭時,則是從ClassPath根下獲取code

    Class.getResource("/") == ClassLoader().getResource("")資源

緣由: Class.getResource和ClassLoader.getResource本質上是同樣的get

Class.getResource可使用("/"),使用了 resolveName 將 / 處理了string

private String resolveName(String name) {
        if (name == null) {
            return name;
        }
        if (!name.startsWith("/")) {
            Class<?> c = this;
            while (c.isArray()) {
                c = c.getComponentType();
            }
            String baseName = c.getName();
            int index = baseName.lastIndexOf('.');
            if (index != -1) {
                name = baseName.substring(0, index).replace('.', '/')
                    +"/"+name;
            }
        } else {
            name = name.substring(1);
        }
        return name;
    }
相關文章
相關標籤/搜索