欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 读取类路径下的资源文件实现代码

程序员文章站 2024-02-12 15:00:28
java 读取类路径下的资源文件实现代码 一、工具类代码resourceloadutil.java import java.io.ioexception;...

java 读取类路径下的资源文件实现代码

一、工具类代码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; 
  } 
} 
 
 
 

二、执行结果

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] 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!