这篇文章主要介绍了java 读取类路径下的资源文件实现代码的相关资料,主要实现工具类代码resourceloadutil.java的实例需要的朋友可以参考下
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]
以上就是java如何实现读取类路径下资源文件的代码案例的详细内容。