http://riddickbryant.iteye.com/blog/436693
首先,Java中的getResourceAsStream有以下几种:
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
4. Jsp下的application内置对象就是上面的ServletContext的一种实现。
其次,getResourceAsStream 用法大致有以下几种:
第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
总结一下,可能只是两种写法
第一:前面有 “ / ”
“ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面没有 “ / ”
代表当前类的目录
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
分享到:
相关推荐
6. **优化性能**:如果你需要频繁地读取JAR中的文件,考虑使用`URLClassLoader`或`Class.getResourceAsStream()`方法,这可能会提供更好的性能。 通过以上步骤,你可以在Java源文件中成功地读取并处理JAR包文件中的...
在给定的代码示例中,`JarFileAccess`类展示了如何读取JAR文件中的指定文件并将其复制到目标目录。 1. **创建`JarFile`对象**: 使用`new JarFile()`构造函数创建`JarFile`对象,传入JAR文件的路径。这将打开JAR...
在Java编程中,读取jar包内的文件是一个常见的需求,特别是在运行时动态加载资源或类文件时。Java提供了一种内置的方式,通过`java.util.jar`包中的`JarFile`和`JarInputStream`类来实现这个功能。下面将详细介绍...
- `TestWarAndJar1.java`可能包含了一个简单的示例,演示如何使用`getResourceAsStream()`直接读取JAR或WAR内的文本文件。 - `TestWarAndJar2.java`可能进一步扩展,展示如何处理其他类型的资源,比如图片或XML...
在Java编程中,读取项目中的文件,特别是位于`src`目录下的文件,是一个常见的需求。这涉及到对项目结构的理解和使用Java I/O流的知识。`src`目录通常包含源代码文件,而运行时,这些文件会被编译并放置到类路径...
在Java中读取jar文件中的资源是一项常见但又容易出错的任务。理解类加载器的工作原理和资源文件的路径表示方式对于正确实现这一功能至关重要。通过上述示例代码及其分析,我们不仅可以解决实际开发中的问题,还能更...
- 对于在类路径中(包括JAR文件)的资源,你可以使用`Class.getResourceAsStream()`或`ClassLoader.getResourceAsStream()`方法。这些方法返回一个`InputStream`,你可以从中读取文件内容。例如,如果你有一个名为`...
// 使用getResourceAsStream()方法读取图像文件 InputStream input = this.getClass().getResourceAsStream("/image/sample.gif"); // 输出资源文件的URL System.out.println(this.getClass().getResource("/...
在Java编程中,读取资源文件是常见的任务,特别是在配置应用程序、处理文本数据或加载本地化内容时。本文将深入探讨如何使用Java读取资源文件,特别是properties类型的文件。 资源文件通常存储在项目的类路径...
这个例子展示了如何在IDEA中通过`getResourceAsStream()`方法读取并处理资源文件中的图片。 总之,Java提供了多种方式来读取项目中的资源文件,通过理解类路径和使用适当的IO方法,可以有效地在IDEA环境中加载和...
总结来说,Java中读取配置文件是一个基本但至关重要的操作,使用`Class.getResourceAsStream`结合`Properties`类可以轻松完成。确保正确设置配置文件的路径,以及在使用完毕后关闭`InputStream`,以避免资源泄露。...
在Java编程中,读取配置文件是常见的任务,特别是在构建可扩展和可维护的应用程序时。配置文件通常用于存储应用程序的设置、连接信息或其他敏感数据,这样可以将这些信息与核心代码分离,便于管理和更新。本篇文章将...
在尝试使用Spring的`ResourceUtils.getFile()`方法读取文件时,如以下代码所示: ```java import org.springframework.util.ResourceUtils; public static void main(String[] args) throws IOException { File ...
总结来说,从JAR包中读取图片涉及对Java类路径的理解,以及正确使用`getResource()`或`getResourceAsStream()`方法。在实际项目中,这通常是通过封装在静态方法或工具类中,以便在多个地方复用。对于开发者来说,...
- 动态加载:如果配置文件不在JAR内部,可以使用`ClassLoader`来获取资源,例如`getClass().getResourceAsStream("/config.properties")`。这样,无论JAR在哪里运行,只要配置文件在类路径(classpath)下,都能...
从Java JAR文件包中读取资源是Java开发中常见的需求,尤其是在处理图像、配置文件等静态资源时。本文将详细解析如何从JAR文件中有效地读取这些资源,包括但不限于图片、文本文件等。 ### Java JAR文件概述 JAR...
在类路径中查找属性文件时,可以使用`Class.getResourceAsStream()`方法,这适用于在JAR文件或类路径下的属性文件: ```java InputStream is = MyClass.class.getResourceAsStream("/config.properties"); props...
- 如果你的资源文件是Java项目的一部分,你可以在类路径中直接导入它们,然后使用`getClass().getResource()`或`getClass().getResourceAsStream()`方法。 4. 文件系统访问 - 如果资源文件位于文件系统的某个位置...
我们可以获取当前线程的上下文类加载器,然后使用`getResourceAsStream()`方法读取文件。例如: ```java ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream inputStream =...
例如,我们可以获取`ConnectionPool`类的类加载器,然后根据类的包路径定位到`database.properties`,并通过`getResourceAsStream()`方法读取文件内容。伪代码如下: ```java ClassLoader loader = ConnectionPool....