当前位置: 移动技术网 > IT编程>开发语言>Java > Java 读取类路径下的资源文件实现代码

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

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] 

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网