Cet article présente principalement les informations pertinentes sur le code d'implémentation de Java pour la lecture des fichiers de ressources sous le chemin de classe. Les amis qui ont besoin d'exemples du code de classe de l'outil d'implémentation principal ResourceLoadUtil.java peuvent se référer à
Java. Lisez le code d'implémentation du fichier de ressources sous le chemin de classe
1. Code de classe d'outil 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")); } /** * 根据Class加载资源文件 * * @param clazz * @param path * 以'/'开头的路径: 使用绝对路径寻找文件(以ClassPath为根路径开始)<br> * 否则: 使用相对路径寻找文件(相对于clazz位置路径开始) * @return */ public static InputStream loadResourceByClazz(Class<?> clazz, String path) { return clazz.getResourceAsStream(path); } /** * 根据ClassLoader加载资源文件(单个), 使用默认的ClassLoader! * * @param path * 不能以'/'开头的路径 * @return */ public static InputStream loadResourceByClassLoader(String path) { return loadResourceByClassLoader(null, path); } /** * 根据ClassLoader加载资源文件(单个), 使用默认的ClassLoader! * * @param path * 不能以'/'开头的路径 * @return */ public static InputStream loadResourceByClassLoader(ClassLoader cl, String path) { if (cl == null) { cl = Thread.currentThread().getContextClassLoader(); } return cl.getResourceAsStream(path); } /** * 根据ClassLoader加载资源文件(多个),使用默认的ClassLoader! * * @param path * 不能以'/'开头的路径 * @return */ public static List<URL> loadResourcesByClassLoader(String path) { return loadResourcesByClassLoader(null, path); } /** * 根据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; } }
2. Résultats d'exécution
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]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!