Java 讀取類路徑下的資源文件實(shí)現(xiàn)代碼
Java 讀取類路徑下的資源文件實(shí)現(xiàn)代碼
一、工具類代碼ResourceLoadUtil.java
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
public class ResourceLoadUtil {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("ByClazz...\n--------------------------");
System.out.println(loadResourceByClazz(String.class, "/java/lang/String.class"));
System.out.println(loadResourceByClazz(String.class, "/ResourceLoadUtil.class"));
System.out.println();
System.out.println("ByClasLoader...\n--------------------------");
System.out.println(loadResourceByClassLoader("java/lang/String.class"));
System.out.println(loadResourceByClassLoader("ResourceLoadUtil.class"));
System.out.println();
System.out.println("sByClasLoader...\n--------------------------");
System.out.println(loadResourcesByClassLoader("java/lang/String.class"));
System.out.println(loadResourcesByClassLoader("ResourceLoadUtil.class"));
System.out.println(loadResourcesByClassLoader("struts-plugin.xml"));
}
/**
* 根據(jù)Class加載資源文件
*
* @param clazz
* @param path
* 以'/'開頭的路徑: 使用絕對路徑尋找文件(以ClassPath為根路徑開始)<br>
* 否則: 使用相對路徑尋找文件(相對于clazz位置路徑開始)
* @return
*/
public static InputStream loadResourceByClazz(Class<?> clazz, String path) {
return clazz.getResourceAsStream(path);
}
/**
* 根據(jù)ClassLoader加載資源文件(單個), 使用默認(rèn)的ClassLoader!
*
* @param path
* 不能以'/'開頭的路徑
* @return
*/
public static InputStream loadResourceByClassLoader(String path) {
return loadResourceByClassLoader(null, path);
}
/**
* 根據(jù)ClassLoader加載資源文件(單個), 使用默認(rèn)的ClassLoader!
*
* @param path
* 不能以'/'開頭的路徑
* @return
*/
public static InputStream loadResourceByClassLoader(ClassLoader cl, String path) {
if (cl == null) {
cl = Thread.currentThread().getContextClassLoader();
}
return cl.getResourceAsStream(path);
}
/**
* 根據(jù)ClassLoader加載資源文件(多個),使用默認(rèn)的ClassLoader!
*
* @param path
* 不能以'/'開頭的路徑
* @return
*/
public static List<URL> loadResourcesByClassLoader(String path) {
return loadResourcesByClassLoader(null, path);
}
/**
* 根據(jù)ClassLoader加載資源文件(多個),使用指定的ClassLoader!
*
* @param path
* 不能以'/'開頭的路徑
* @return
*/
public static List<URL> loadResourcesByClassLoader(ClassLoader cl, String path) {
if (cl == null) {
cl = Thread.currentThread().getContextClassLoader();
}
List<URL> urlLst = new ArrayList<URL>();
try {
Enumeration<URL> urlsEnum = cl.getResources(path);
while (urlsEnum.hasMoreElements()) {
URL url = (URL) urlsEnum.nextElement();
urlLst.add(url);
}
} catch (IOException e) {
e.printStackTrace();
}
return urlLst;
}
}
二、執(zhí)行結(jié)果
ByClazz... -------------------------- sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@11cfb549 java.io.BufferedInputStream@a422ede ByClasLoader... -------------------------- sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@7f12f614 java.io.BufferedInputStream@35d9dc39 sByClasLoader... -------------------------- [jar:file:/D:/Java/jdk1.6.0_25/jre/lib/rt.jar!/java/lang/String.class] [file:/E:/workspace/JBDS/Spring+Struts2-Integration/target/classes/ResourceLoadUtil.class] [jar:file:/E:/360data/%e9%87%8d%e8%a6%81%e6%95%b0%e6%8d%ae/.m2/repository/org/apache/struts/struts2-spring-plugin/2.3.4.1/struts2-spring-plugin-2.3.4.1.jar!/struts-plugin.xml, jar:file:/E:/360data/%e9%87%8d%e8%a6%81%e6%95%b0%e6%8d%ae/.m2/repository/org/apache/struts/struts2-config-browser-plugin/2.3.4.1/struts2-config-browser-plugin-2.3.4.1.jar!/struts-plugin.xml]
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Java 配置log4j日志文件路徑 (附-獲取當(dāng)前類路徑的多種操作)
- 基于java類路徑classpath和包的實(shí)例講解
- Java中獲取類路徑classpath的簡單方法(推薦)
- 關(guān)于idea中Java Web項(xiàng)目的訪問路徑問題
- JAVA獲取當(dāng)前項(xiàng)目和文件所在路徑的實(shí)例代碼
- Java中的通用路徑轉(zhuǎn)義符介紹
- java下載url路徑包含中文需要轉(zhuǎn)義的操作
- IDEA 打開java文件對應(yīng)的class路徑的操作步驟
- Java在指定路徑上創(chuàng)建文件提示不存在解決方法
- linux中java獲取路徑的實(shí)例代碼
- Java 正確地從類路徑中獲取資源
相關(guān)文章
IntelliJ IDEA 2021.1 EAP 1 發(fā)布支持 Java 16 和 WSL 2
這篇文章主要介紹了IntelliJ IDEA 2021.1 EAP 1 發(fā)布支持 Java 16 和 WSL 2,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
基于SpringBoot實(shí)現(xiàn)自定義插件的流程詳解
在SpringBoot中,插件是一種擴(kuò)展機(jī)制,它可以幫助我們在應(yīng)用程序中快速地添加一些額外的功能,在本文中,我們將介紹如何使用 SpringBoot實(shí)現(xiàn)自定義插件,需要的朋友可以參考下2023-06-06
基于java.lang.IllegalArgumentException異常報錯問題及解決
這篇文章主要介紹了基于java.lang.IllegalArgumentException異常報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
Java synchronized關(guān)鍵字使用方式及特性解析
這篇文章主要介紹了Java synchronized關(guān)鍵字使用方式及特性解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12
Java項(xiàng)目之java+springboot+ssm實(shí)現(xiàn)理財管理系統(tǒng)設(shè)計
這篇文章主要介紹了Java項(xiàng)目java+springboot+ssm實(shí)現(xiàn)理財管理系統(tǒng)設(shè)計,使用了當(dāng)前較為流行的spring boot,spring,spring mvc,mybatis,shiro框架分頁處理使用了pagehelper進(jìn)行操作,需要的朋友可以參考一下2022-03-03
JUC循環(huán)屏障CyclicBarrier與CountDownLatch區(qū)別詳解
這篇文章主要為大家介紹了JUC循環(huán)屏障CyclicBarrier與CountDownLatch區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

