`

Java中获取classpath路径下的资源文件

阅读更多


引自: http://blog.sina.com.cn/s/blog_9c7605530101gg9d.html

 

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对象的这两个方法就可以了。

       因此,直接调用  this.getClass().getResourceAsStream(String name) ;获取流,

                静态化方法中则使用ClassLoader.getSystemResourceAsStream (String name) ; 。

      下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

1.this.getClass().getResource("") 
得到的是当前类class文件的URI目录。不包括自己!
如:file:/D:/workspace/jbpmtest3/bin/com/test/

2.this.getClass().getResource("/") 
得到的是当前的classpath的绝对URI路径 
如:file:/D:/workspace/jbpmtest3/bin/

3.this.getClass() .getClassLoader().getResource("") 
得到的也是当前ClassPath的绝对URI路径 
如:file:/D:/workspace/jbpmtest3/bin/

4.ClassLoader.getSystemResource("") 
得到的也是当前ClassPath的绝对URI路径 
如:file:/D:/workspace/jbpmtest3/bin/

5.Thread.currentThread().getContextClassLoader ().getResource("") 
得到的也是当前ClassPath的绝对URI路径 
如:file:/D:/workspace/jbpmtest3/bin/

6.ServletActionContext.getServletContext().getRealPath(“/”) 
Web应用程序 中,得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。
如:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebProject

分享到:
评论

相关推荐

    java文件路径获取

    本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好地理解和掌握这些技巧。 #### 二、基本概念 在深入讨论之前,我们需要了解几个基本概念: - **Classpath**: 是Java运行环境的一个重要...

    JAVA获取CLASSPATH路径的方法详解

    本文将详细解析如何在Java中获取`CLASSPATH`路径,并介绍相关的方法和技术。 首先,`ClassLoader`类是Java中负责加载类和资源的核心组件。它提供了两个方法来获取资源: 1. `public URL getResource(String name)`...

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

    - 通常,Java项目有一个标准的目录结构,如`src/main/java`用于存放Java源代码,`src/main/resources`用于存放资源文件,如配置文件、图片或文本文件等。如果你的文件直接放在`src`目录下,可能意味着它是在源代码...

    总结一下java获取路径几种途径

    在Java Web应用中,资源文件的位置可能会变化,此时可以通过`ClassLoader`来获取资源的URL或路径。 ```java // 获取当前类的ClassLoader ClassLoader classLoader = this.getClass().getClassLoader(); // 获取资源...

    Java中获取类路径classpath的简单方法(推荐)

    本文将详细介绍在Java中获取类路径的几种常见方法,以供开发者参考。 首先,类路径(classpath)是Java应用程序在运行时查找和加载类的路径集合。它可以通过命令行选项 `-cp` 或 `-classpath` 在启动Java应用时指定...

    基于获取JAVA路径,包括CLASSPATH外的路径的方法详解

    在Java编程中,获取Java路径以及CLASSPATH外部的路径是非常关键的操作,尤其当需要加载类、资源文件或进行系统级操作时。这篇文章主要探讨了几种获取这些路径的方法。 首先,我们来看一下如何获取Java路径。Java...

    JAVA获取文件绝对路径的方法

    以下是一些在Java中获取文件绝对路径的方法: 1. `File.getAbsolutePath()` `java.io.File` 类提供了 `getAbsolutePath()` 方法,此方法返回表示文件或目录的绝对路径字符串。例如: ```java File file = new ...

    java classloader classpath 张孝祥

    这些方法可以灵活地定位和加载不同位置的资源文件,为开发提供了很大的便利性。 #### 五、注意事项 - 使用`System.getProperty("user.dir")`获取当前工作目录的路径时需要注意,它返回的是当前工作目录的绝对路径...

    java中File的相对路径与绝对路径总结

    在Java中,处理文件时通常会遇到两种类型的路径:**相对路径**与**绝对路径**。 - **相对路径**:指的是相对于当前工作目录或类路径(Classpath)的一种路径表示方式。 - **绝对路径**:则是一种完整地指明文件位置...

    Java或web中解决所有路径问题

    在某些情况下,我们可能需要获取项目的ClassPath路径,以便于访问位于该路径下的资源文件。以下是一些获取ClassPath路径的方法: 1. **通过类的getResource方法**: ```java String classPath = DebitNoteAction....

    java 读取资源文件

    资源文件通常存储在项目的类路径(classpath)下,可以是.properties、.txt、.xml等形式,它们提供了与代码分离的配置选项。对于.properties文件,Java提供了一个内置的Properties类来管理和读取这些文件。 1. **...

    java classpath 配置详细讲解

    - **作用**:当Java程序运行时,JVM会根据`classpath`来定位所需的类文件(`.class`文件)和其他资源文件。如果没有正确配置`classpath`,可能会导致类找不到异常(ClassNotFoundException)等错误。 #### 三、环境...

    java项目相对路径与绝对路径问题分析

    1. 相对于classpath的相对路径:如在`file:/D:/java/eclipse32/workspace/jbpmtest3/bin/`这个classpath路径下的相对路径,这意味着你需要结合classpath的基路径来解析资源的实际位置。 2. 相对于当前用户目录的相对...

    Java路径问题最终解决方案之一.

    为了更有效地使用路径,下面列出了一些获取当前classpath和类文件绝对路径的方法: 1. **使用 `FileTest.class.getResource("")`**:这种方法可以获取当前类 `FileTest.class` 文件的URI目录,但不包含自身。例如:...

    JavaWeb_servlet(11)_ 通过 ServletContex 获得类路径下的文件路径

    1. `getRealPath()`:这个方法返回一个字符串,表示相对于Web应用根目录的类路径资源的实际文件系统路径。例如,如果你有一个配置文件位于`WEB-INF/classes/config.properties`,你可以使用如下的代码来获取其实际...

    springboot如何获取相对路径文件夹下静态资源的方法

    在Spring Boot中,静态资源可以存储在classpath下的静态资源文件夹中,也可以存储在相对路径下的文件夹中。如果我们的静态资源存储在相对路径下的文件夹中,那么如何在Spring Boot中获取这些静态资源呢? 首先,...

    Spring中使用classpath加载配置文件浅析

    如果存在同名的配置文件,但位于不同的位置,根据Spring加载类路径资源的策略,可能会加载到一个错误的文件。为了避免这种情况,开发者需要仔细设计自己的目录结构,并确保配置文件的命名和位置唯一,以避免冲突。 ...

    Java路径问题

    总结来说,Java中的路径问题涉及多种路径类型、API和配置方式,理解这些概念对于进行文件操作和构建复杂应用至关重要。无论是简单的文件读写,还是复杂的类加载逻辑,都需要对路径有深入的理解。通过熟练掌握这些...

Global site tag (gtag.js) - Google Analytics