`
lizhuang
  • 浏览: 906012 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java的getResourceAsStream

    博客分类:
  • Java
 
阅读更多
原理是与类加载器相关
类加载器原理请参考:http://www.cnblogs.com/xing901022/p/4574961.html
JDK说明:
Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream(java.lang.String).


首先,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根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
分享到:
评论

相关推荐

    Java中getResourceAsStream用法分析

    在Java编程中,`getResourceAsStream` 是一个非常实用的方法,用于从类路径或者特定上下文中获取资源流,通常用来读取配置文件、图片、XML文档等静态资源。这个方法在处理与代码打包在一起的非代码文件时非常方便。...

    getResourceAsStream

    java getResourceAsStream种类,分我所知道的3种情况

    Java中getResourceAsStream的用法.md

    Java中getResourceAsStream的用法.md

    java文件路径获取

    ### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...

    java读取资源文件

    在Java编程中,读取资源文件是一项常见的任务,特别是在开发应用程序时,我们可能需要加载配置文件、图片、音频或视频等资源。在这个场景下,我们将深入探讨如何在IntelliJ IDEA(Idea)环境中读取资源文件,特别是...

    java项目中获取路径详解

    在 Java 项目中,读取包内文件可以使用 `getResourceAsStream` 方法。例如,`InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");` 可以读取包内的文件 `a.txt`。 Java Web 项目中...

    java Swing读取图片

    在Java编程中,Swing库提供了丰富的组件和功能来创建图形用户界面(GUI)。当我们需要在Swing应用中展示图片时,可以利用特定的方法来读取并显示图像。本篇文章将详细讲解如何在Java Swing中读取和显示图片,以及与...

    java-loadresource.rar

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

    java读取项目中的文件(src目录下)

    在Java编程中,读取项目中的文件,特别是位于`src`目录下的文件,是一个常见的需求。这涉及到对项目结构的理解和使用Java I/O流的知识。`src`目录通常包含源代码文件,而运行时,这些文件会被编译并放置到类路径...

    yaml文件解析(java)

    InputStream inputStream = YamlParser.class.getResourceAsStream("/config.yaml"); // 创建Yaml实例 Yaml yaml = new Yaml(); // 解析YAML文件并将其转换为Map对象 Map, Object> configMap = yaml.load...

    java Properties文件key,value读取

    Java Properties文件是Java编程语言中用于存储配置信息的文本文件,通常以.key=value的形式存储键值对。这种文件格式在Java应用中广泛用于保存应用程序的配置参数、国际化字符串或者数据库连接信息等。读取...

    Java加载properties文件的六种方法

    5. **使用 `class.getClassLoader()` 所得到的 `java.lang.ClassLoader` 的 `getResourceAsStream()` 方法** 这种方法与第4种类似,只是通过类加载器获取资源输入流。示例: ```java InputStream in = ...

    在Java程序中获取当前运行程序的路径

    首先,我们可以通过`java.lang.Class`类的`getResource`或`getResourceAsStream`方法来获取类路径中的资源文件路径。这两个方法都是在类路径中查找资源,返回一个URL对象,从中可以获取路径信息。例如,如果我们有一...

    Java读取资源文件时内容过长与换行的处理

    ### Java读取资源文件时内容过长与换行的处理 在Java开发过程中,经常会遇到需要读取资源文件的情况,比如配置文件、属性文件等。这些文件中的内容有时会非常长,或者为了提高可读性,需要进行换行处理。本文将详细...

    Java应用程序读取图片内容.zip

    InputStream inputStream = getClass().getResourceAsStream("/image.jpg"); BufferedImage image = ImageIO.read(inputStream); ``` 7. **支持的图像格式**: Java Image I/O API支持多种图像格式,如JPEG、PNG...

    java 读取properties文件代码

    InputStream input = getClass().getResourceAsStream("/config.properties"); prop.load(input); ``` 总结,Java中读取Properties文件是通过`java.util.Properties`类来实现的,涉及的关键步骤包括加载文件、获取...

    java类读取配置文件信息

    在Java类中,读取配置文件信息可以使用多种方法,其中一种方法是使用`this.getClass().getClassLoader().getResourceAsStream`方法。 `this.getClass().getClassLoader().getResourceAsStream`方法是Java类中的一种...

    JAVA获取各种路径总结

    ### JAVA 获取各种路径总结 在Java开发中,特别是在Web应用开发中,经常需要获取不同类型的路径,例如:当前Web应用的路径、特定文件的真实路径等。本文将详细讲解如何通过不同的方式来获取这些路径。 #### JSP中...

    java 静态代码块通过类加载器获取资源文件例子

    在Java编程中,静态代码块(Static Block)和类加载器(Class Loader)是两个重要的概念,它们在软件开发中有着广泛的应用。本案例聚焦于如何利用静态代码块结合类加载器来高效地获取资源文件,尤其是属性配置文件。...

Global site tag (gtag.js) - Google Analytics