浅析Java getResource详细介绍

 更新时间:2021年09月04日 16:18:41   作者:ghimi  
这篇文章主要介绍了Java getResource 讲解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在 Java 中访问资源我们一般使用 getResource() 方法,亦或者直接new File()然后传入一个文件路径获取资源文件。但是这两者究竟有什么区别呢?由于平常在使用的时候经常会傻傻分不清楚,因此这里写篇博客整理下我的笔记。

Java 运行中资源的说明

这里我们将运行中 Java 进程可以获取到的资源简单分为两类:

存在于文件系统中的资源

这类资源一般直接存在与磁盘中,我们可以直接从资源管理器中访问到。当我们通过应用访问这类资源时既可以使用 File对象通过文件系统获取到,也可以使用 getResource()方法获取到(仅限于classpath中)。

在这里插入图片描述

注意 getResource() 方法的获取范围仅限于 指定的范围classpathclasspath 之外的资源是无法获取到的。
在这里插入图片描述

存在于jar包中的资源

这类资源如字面含义,存在于 jar 包中,而 jar 是被我们包含在 classpath 中的。所以这一类资源妥妥的可以被我们称为代码中的资源。由于这种资源是包含在一个文件中,我们用File只能获取到jar包,而无法获取到 jar包中的资源。

在这里插入图片描述

这类资源一般是存在于 classpath 中的文件,我们可以使用上面的 getResource()方法获取到其路径,(通常样式是资源所在文件的路径+资源在文件中的路径)但是没有办法直接通过文件读取到。但是可以通过 classLoader 对象中的 getResourceAsStream()方法获取到资源的输入流。

在这里插入图片描述

Java 中 getResource() 说明

在 Java 中类对象如java.lang.String.class 或者 具体的类加载器对象如 java.lang.String.class.getClassLoader()中都有getResource()方法,但是在类对象上调用getResource()方法时,路径会和使用类加载器对象上调用getResource()方法有所区别。

getResource()方法中传入的路径为绝对路径时,两者都是从 classpath 开始寻找资源:

Main.class.getResource("/com/ghimi/demo/data.json");
Main.class.getClassLoader().g

getResource()方法中传入的路径为相对路径时,两者查找资源的方式会有所差异

// 当使用类对象加载资源时,会从类对象目录下去寻找该资源
// 如 Main.class 位于 demo01.jar 包的 /com/ghimi/demo 目录下
// getResource 方法会尝试从该目录下查找 data.json 资源
Main.class.getResource("data.json");
// 当使用类加载器对象加载资源时,会从 classpath 根目录下查找该资源
// getResource 方法会尝试从 classpath 根目录下找 data.json 资源
Main.class.getClassLoader().getResource("data.json");

getResource()方法获取不到资源时,会返回 null.

到此这篇关于浅析Java getResource 讲解的文章就介绍到这了,更多相关Java getResource 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 功能整合的实现

    Spring Boot 功能整合的实现

    Spring Boot生态丰富,集成也不算困难。本文简单的介绍下功能整合的步骤,最后提供一个具体的实现例子,学习Spring Boot的同学可以参考下
    2021-05-05
  • Java web开发中加载图片路径的两种方式

    Java web开发中加载图片路径的两种方式

    下文给大家介绍基于编译器idea以及tomcat服务器开发的,对Java web开发加载图片路径的两种方式感兴趣的朋友一起看看吧
    2017-07-07
  • 详解Java的Spring框架中的事务管理方式

    详解Java的Spring框架中的事务管理方式

    这篇文章主要介绍了Java的Spring框架中的事务管理方式,Spring框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • SpringBoot中的文件上传和异常处理详解

    SpringBoot中的文件上传和异常处理详解

    这篇文章主要介绍了SpringBoot中的文件上传和异常处理详解,对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息,对于浏览器客户端,响应一个"whitelabel"错误视图,以HTML格式呈现相同的数据,需要的朋友可以参考下
    2023-09-09
  • 分享Java常用几种加密算法(四种)

    分享Java常用几种加密算法(四种)

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。本文给大家分享java常用的几种加密算法,需要的朋友可以参考下
    2015-10-10
  • Java读取其下所有文件夹与文件路径的方法

    Java读取其下所有文件夹与文件路径的方法

    这篇文章主要为大家详细介绍了Java读取其下所有文件夹与文件路径的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • MyBatis实现多表联合查询resultType的返回值

    MyBatis实现多表联合查询resultType的返回值

    这篇文章主要介绍了MyBatis多表联合查询resultType的返回值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java中简单实用Quartz概述

    Java中简单实用Quartz概述

    Quartz是一个开源的Java调度框架,可以用来实现在指定的时间或时间间隔触发任务执行的功能,这篇文章主要介绍了Java中简单实用Quartz,需要的朋友可以参考下
    2023-02-02
  • Mybatis控制台打印Sql语句的实现代码

    Mybatis控制台打印Sql语句的实现代码

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架,下面给大家介绍Mybatis控制台打印Sql语句的实现代码,非常不错,感兴趣的朋友一起看下吧
    2016-07-07
  • java中的String定义的字面量最大长度是多少

    java中的String定义的字面量最大长度是多少

    这篇文章主要介绍了java中的String定义的字面量最大长度是多少,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论