`
siashuayongsheng
  • 浏览: 121194 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

两种getResourceAsStream()方法比较

    博客分类:
  • Java
阅读更多
Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
注意两点:
1,用Class.getResourceAsStream() 时,路径应该是以"/"开头的,如:
mypackage.Hello.class.getResourceAsStream("/config/config.ini");
2,如果直接用ClassLoader的getResourceAsStream() 不用以"/"开头.如,
mypackage.Hello.class.getResourceAsStream("config/config.ini");
3注意文件放置的位置,应该放在classpath下.如:工程文件中的classes下.
大家自己试试.
"ClassLoader提供了两个方法用于从装载的类路径中取得资源:

   public URL getResource(String name);
   public InputStream getResourceAsStream(String name);

这里name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。
然而,程序中调用的通常并不是ClassLoader的这两个方法,而是Class的getResource和 getResourceAsStream方法,因为Class对象可以从你的类得到(如YourClass.class或 YourClass.getClass()),而ClassLoader则需要再调用一次YourClass.getClassLoader()方法,但根据JDK文档的说法,Class对象的这两个方法其实是“委托”(delegate)给装载它的ClassLoader来做的,所以只需要使用 Class对象的这两个方法就可以了。
举例说明:

   mypackage.Hello.class.getResourceAsStream("/config/config.ini");

从classpath下的config相对路径中读取config.ini"
hibernate 可以用 Environment.class.getResourceAsStream(String resource);
例:
public class DayTimer {


public static void schedule(){
   Timer timer=new Timer();
   InputStream is=DayTimer.class.getResourceAsStream("/timer.properties");
   Properties pro=new Properties();
    if(is==null){
         System.out.println("properties is not found");
     }
    try {
      pro.load(is);
    }
    catch (IOException ex) {
      ex.printStackTrace();
      return;
    }
    String taskClassIdentifier=pro.getProperty("timertask") ;
    Class taskClass=null;
    if(taskClassIdentifier.equals("sis")){
     try {
     taskClass=Class.forName("com.mapabc.log.util.SisLogTimerTask");
  
    } catch (ClassNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     return;
    }
    }else if(taskClassIdentifier.equals("apache")){
     try {
      /*
       * ���Ҫ����apache��־��ѯ������Ҫ��Ӧ��TimerTask
       */
      taskClass=Class.forName("");
   
     } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return;
     }
    }else if(taskClassIdentifier.equals("user")){
     try {
      /*
       * 如果要设置user日志查询,还需要相应的TimerTask��TimerTask
       */
      taskClass=Class.forName("");
   
     } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return;
     }
    }
    try {
    TimerTask task=(TimerTask)taskClass.newInstance();
    timer.schedule(task,new Date(), 1000*60*60*24l);
    return;
   } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }catch(ClassCastException cce){
    cce.printStackTrace();
   }
}
public static void main(String [] args){
   DayTimer.schedule();
}

}
分享到:
评论

相关推荐

    Java中getResourceAsStream用法分析

    通常,`getResourceAsStream`的使用主要分为两种情况: - 前面带有'/':表示从类路径的根开始查找,适用于跨包或跨目录的情况。 - 没有'/':表示从当前类的包开始查找,适用于同包或子包内的资源。 理解这些用法...

    java-loadresource.rar

    本篇文章将详细探讨Java提供的两种主要方法:`Class.getResource`和`Class.getResourceAsStream`,用于加载类路径下的资源文件。 首先,`Class.getResource`方法返回一个`URL`对象,它表示资源的位置。这个方法接受...

    读取properties文件路径的两种方式.zip

    本篇将详细讲解两种读取`properties`文件路径的方法,并通过一个项目示例进行演示。 方法一:使用`java.util.Properties`类 1. 首先,我们需要创建一个`properties`文件,例如命名为`config.properties`,并将它...

    Java文件路径详解

    Java 文件路径详解是 Java 中获取文件路径的方式,包括 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream() 两种方法。这些方法可以帮助开发者快速获取文件路径,以便于读取文件的内容。

    XFire与Spring集成WebService客户端的两种开发方式.pdf

    这两种方法都是为了方便地创建和管理WebService客户端,同时利用Spring的强大功能进行依赖注入和配置管理。 ### 方式一:通过WSDL文件创建WebService客户端 在第一种方法中,开发人员首先需要拥有服务方提供的WSDL...

    API读取Properties文件的六种方法

    与前两种方法相比,这种方式更加通用,因为它不依赖于特定的类或类加载器。 ```java import java.io.InputStream; import java.util.Properties; public class SystemResourceExample { public static void main...

    java对properties文件的操作.pdf

    有两种常见的方法: 1. 使用ClassLoader类的getSystemResourceAsStream静态方法加载类路径根目录下的属性文件: Properties properties = new Properties(); InputStream inputstream = ClassLoader....

    Java读取.properties配置文件方法示例

    在Java中,读取Properties文件主要有两种方法,一种是使用getResourceAsStream方法,另一种是使用FileInputStream方法。 一、Properties文件 Properties 文件是Java中主要的配置文件,文件类型为.properties,格式...

    从java jar文件包中读资源的常用方法

    这两个方法利用了前面讨论的概念,特别是`getResourceAsStream`,以及字节数组流(`ByteArrayOutputStream`)和工具包(`Toolkit`)来创建和处理图像。 ```java public class ResourseReader { public static ...

    java操作properties方法

    在Web环境中加载资源文件,通常有两种方法: 1. 使用当前线程的`ContextClassLoader`:`Thread.currentThread().getContextClassLoader().getResourceAsStream("filename")` 2. 使用类的`ClassLoader`:`this....

    Spring Boot读取resources目录文件方法详解

    本文将详细介绍Spring Boot读取resources目录文件的两种方法,并提供测试用例以便更好地理解。 资源文件的作用 在Java项目中,资源文件通常用于存储配置文件、模板文件、图片等静态资源。这些文件可以被应用程序...

    JAVA实现权限管理的两种方式六编程资料

    ### JAVA实现权限管理的两种方式 #### 第一种方式:利用Filter、XML文件和用户信息表配合使用来实现权限管理 在Java Web应用中,权限管理是确保系统安全性和功能访问控制的重要组成部分。本文将详细介绍如何通过...

    android 通过资源字符串获得对应ID

    本文将详细介绍如何通过资源字符串获取其对应的资源ID,并提供两种实用的方法来实现这一功能。 #### 一、问题背景与分析 在开发过程中,可能会遇到需要根据图片名称动态加载对应图片资源的需求。通常情况下,...

    tomcat常见问题及解决方法

    加载属性文件是 Tomcat 中的一项常见操作,一般有两种方法可以实现。第一种方法是使用 ResourceBundle,通过在 WEB-INF/classes 目录下或在 WEB-INF/lib 目录下的 jar 文件中放置属性文件,然后使用 ResourceBundle ...

    Java加载properties文件实现方式详解

    Java提供了多种方式来加载properties文件,本文将详细介绍Java加载properties文件的两种主要实现方式,并提供相应的示例代码。 使用java.util.Properties类的load(InputStream in)方法加载properties文件 Java中的...

    关于java和web工程项目中各种路径的获取总结借鉴.pdf

    下面介绍两种获取Web项目根目录的方法: 1. **从`Servlet`出发** ```java ServletContext s1 = this.getServletContext(); String temp = s1.getRealPath("/"); ``` 这里通过`this.getServletContext()`获取...

    读取jar文件

    在这段代码中,主要使用了两种方法来读取资源文件: 1. **使用`getResource`方法**:此方法返回一个`URL`对象,该对象表示资源文件的位置。这里打印出的`URL`可以用来确认资源文件是否被正确定位。 2. **使用`...

    JAVA打包后读取自身JAR中的文件.pdf

    具体实现可以通过以下两种方法: 1. **`getResourceAsStream()`** 这个方法用于读取二进制流数据。示例代码如下: ```java InputStream inputStream = getClass().getResourceAsStream("/image/Environment....

    SpringBoot如何读取war包jar包和Resource资源

    两种方法都可以读取资源文件,但是它们的使用场景和返回值不同。 getResource() 方法返回 URL 对象,表示资源文件的路径。如果资源文件不存在,返回 null。 getResourceAsStream() 方法返回 InputStream 对象,...

Global site tag (gtag.js) - Google Analytics