热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了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为根路径开始)
* 否则: 使用相对路径寻找文件(相对于clazz位置路径开始) * @return */ public static InputStream loadResourceByClazz(Class<&#63;> 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 loadResourcesByClassLoader(String path) { return loadResourcesByClassLoader(null, path); } /** * 根据ClassLoader加载资源文件(多个),使用指定的ClassLoader! * * @param path * 不能以'/'开头的路径 * @return */ public static List loadResourcesByClassLoader(ClassLoader cl, String path) { if (cl == null) { cl = Thread.currentThread().getContextClassLoader(); } List urlLst = new ArrayList(); try { Enumeration 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] 

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


推荐阅读
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了Apache Spark 2.2.0版本中集群模式的基本概念和工作流程,包括如何通过集群管理器分配资源,以及Spark应用程序在集群中的运行机制。链接:http://spark.apache.org/docs/2.2.0/cluster-overview.html ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 本文详细介绍了如何通过JDBC连接Hive进行数据操作,包括Hive服务的启动、相关依赖的配置以及具体代码示例,适合对Hive和JDBC有一定了解的开发者阅读。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
author-avatar
手机用户2502920971
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有