`
- 浏览:
121194 次
- 性别:
- 来自:
郑州
-
两种getResourceAsStream()方法比较
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();
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
通常,`getResourceAsStream`的使用主要分为两种情况: - 前面带有'/':表示从类路径的根开始查找,适用于跨包或跨目录的情况。 - 没有'/':表示从当前类的包开始查找,适用于同包或子包内的资源。 理解这些用法...
本篇文章将详细探讨Java提供的两种主要方法:`Class.getResource`和`Class.getResourceAsStream`,用于加载类路径下的资源文件。 首先,`Class.getResource`方法返回一个`URL`对象,它表示资源的位置。这个方法接受...
本篇将详细讲解两种读取`properties`文件路径的方法,并通过一个项目示例进行演示。 方法一:使用`java.util.Properties`类 1. 首先,我们需要创建一个`properties`文件,例如命名为`config.properties`,并将它...
Java 文件路径详解是 Java 中获取文件路径的方式,包括 Class.getResourceAsStream() 和 ClassLoader.getResourceAsStream() 两种方法。这些方法可以帮助开发者快速获取文件路径,以便于读取文件的内容。
这两种方法都是为了方便地创建和管理WebService客户端,同时利用Spring的强大功能进行依赖注入和配置管理。 ### 方式一:通过WSDL文件创建WebService客户端 在第一种方法中,开发人员首先需要拥有服务方提供的WSDL...
与前两种方法相比,这种方式更加通用,因为它不依赖于特定的类或类加载器。 ```java import java.io.InputStream; import java.util.Properties; public class SystemResourceExample { public static void main...
有两种常见的方法: 1. 使用ClassLoader类的getSystemResourceAsStream静态方法加载类路径根目录下的属性文件: Properties properties = new Properties(); InputStream inputstream = ClassLoader....
在Java中,读取Properties文件主要有两种方法,一种是使用getResourceAsStream方法,另一种是使用FileInputStream方法。 一、Properties文件 Properties 文件是Java中主要的配置文件,文件类型为.properties,格式...
这两个方法利用了前面讨论的概念,特别是`getResourceAsStream`,以及字节数组流(`ByteArrayOutputStream`)和工具包(`Toolkit`)来创建和处理图像。 ```java public class ResourseReader { public static ...
在Web环境中加载资源文件,通常有两种方法: 1. 使用当前线程的`ContextClassLoader`:`Thread.currentThread().getContextClassLoader().getResourceAsStream("filename")` 2. 使用类的`ClassLoader`:`this....
本文将详细介绍Spring Boot读取resources目录文件的两种方法,并提供测试用例以便更好地理解。 资源文件的作用 在Java项目中,资源文件通常用于存储配置文件、模板文件、图片等静态资源。这些文件可以被应用程序...
### JAVA实现权限管理的两种方式 #### 第一种方式:利用Filter、XML文件和用户信息表配合使用来实现权限管理 在Java Web应用中,权限管理是确保系统安全性和功能访问控制的重要组成部分。本文将详细介绍如何通过...
本文将详细介绍如何通过资源字符串获取其对应的资源ID,并提供两种实用的方法来实现这一功能。 #### 一、问题背景与分析 在开发过程中,可能会遇到需要根据图片名称动态加载对应图片资源的需求。通常情况下,...
加载属性文件是 Tomcat 中的一项常见操作,一般有两种方法可以实现。第一种方法是使用 ResourceBundle,通过在 WEB-INF/classes 目录下或在 WEB-INF/lib 目录下的 jar 文件中放置属性文件,然后使用 ResourceBundle ...
Java提供了多种方式来加载properties文件,本文将详细介绍Java加载properties文件的两种主要实现方式,并提供相应的示例代码。 使用java.util.Properties类的load(InputStream in)方法加载properties文件 Java中的...
下面介绍两种获取Web项目根目录的方法: 1. **从`Servlet`出发** ```java ServletContext s1 = this.getServletContext(); String temp = s1.getRealPath("/"); ``` 这里通过`this.getServletContext()`获取...
在这段代码中,主要使用了两种方法来读取资源文件: 1. **使用`getResource`方法**:此方法返回一个`URL`对象,该对象表示资源文件的位置。这里打印出的`URL`可以用来确认资源文件是否被正确定位。 2. **使用`...
具体实现可以通过以下两种方法: 1. **`getResourceAsStream()`** 这个方法用于读取二进制流数据。示例代码如下: ```java InputStream inputStream = getClass().getResourceAsStream("/image/Environment....
两种方法都可以读取资源文件,但是它们的使用场景和返回值不同。 getResource() 方法返回 URL 对象,表示资源文件的路径。如果资源文件不存在,返回 null。 getResourceAsStream() 方法返回 InputStream 对象,...