java获取resource下的文件路径

2023-11-03

放了文件在 resources 目录下,只想拿到它的路径。

详情如下:

String path = xxx.class.getClassLoader().getResource("targetFile.txt").getPath();

java获取文件目录
| ── pom.xml
| ── src
│ |── main
│ │ |── java
│ │ │ |── com
│ │ │ │ |── alipay
│ │ │ │ │ |── ResourceTest.java
│ │ │ │ │ |── Resource.java
│ │ |── resources
│ │ │ |── conf
│ │ │ │ |── sysConf.json
│ │ │ |── request.xml
| ── local.iml


public class ResourceTest {
    public static void main(String[] args) {
        // 1、通过Class的getResource方法
        String a1 = ResourceTest.class.getResource("/com/alipay/Resource.class").getPath();
        String a2 = ResourceTest.class.getResource("Resource.class").getPath();
        String a3 = ResourceTest.class.getResource("/request.xml").getPath();
        String a4 = ResourceTest.class.getResource("../../request.xml").getPath();
        String a5 = ResourceTest.class.getResource("/conf/sysConf.json").getPath();
        String a6 = ResourceTest.class.getResource("../../conf/sysConf.json").getPath();
 
        // 2、通过本类的ClassLoader的getResource方法
        String b1 = ResourceTest.class.getClassLoader().getResource("com/alipay/Resource.class").getPath();
        String b2 = ResourceTest.class.getClassLoader().getResource("request.xml").getPath();
        String b3 = ResourceTest.class.getClassLoader().getResource("conf/sysConf.json").getPath();
 
        // 3、通过ClassLoader的getSystemResource方法
        String c1 = ClassLoader.getSystemClassLoader().getResource("com/alipay/Resource.class").getPath();
        String c2 = ClassLoader.getSystemClassLoader().getResource("request.xml").getPath();
        String c3 = ClassLoader.getSystemClassLoader().getResource("conf/sysConf.json").getPath();
 
        // 4、通过ClassLoader的getSystemResource方法
        String d1 = ClassLoader.getSystemResource("com/alipay/Resource.class").getPath();
        String d2 = ClassLoader.getSystemResource("request.xml").getPath();
        String d3 = ClassLoader.getSystemResource("conf/sysConf.json").getPath();
 
        // 5、通过Thread方式
        String e1 = Thread.currentThread().getContextClassLoader().getResource("com/alipay/Resource.class").getPath();
        String e2 = Thread.currentThread().getContextClassLoader().getResource("request.xml").getPath();
        String e3 = Thread.currentThread().getContextClassLoader().getResource("conf/sysConf.json").getPath();
    }
}

由于maven打包会把 src/main/java 和 src/main/resources 下的文件放到 target/classes 下,所以下面统一以根路径代表此目录,总结起来有以下几个规律:

Class.getResource()的资源获取如果以 / 开头,则从根路径开始搜索资源。
Class.getResource()的资源获取如果不以 / 开头,则从当前类所在的路径开始搜索资源。
ClassLoader.getResource()的资源获取不能以 / 开头,统一从根路径开始搜索资源。

好了, 以上是本文所有内容,希望对大家有所帮助,也希望大家对码农之家多多支持,你们的支持是我创作的动力!祝大家生活愉快!  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java获取resource下的文件路径 的相关文章

随机推荐

  • 2023年交通与智慧城市国际会议(ICoTSC 2023)

    2023年交通与智慧城市国际会议 ICoTSC 2023 重要信息 会议网址 www icotsc org 会议时间 2023年7月28 30日 召开地点 长沙 截稿时间 2023年6月15日 录用通知 投稿后2周内 收录检索 EI Sco
  • ERROR: Failed building wheel for mayavi

    conda虚拟环境中安装mayavi 提示错误 Numpy is required to build Mayavi correctly please install it first ERROR Failed building wheel
  • Java Web快速开发(2~4)Java 基本程序结构、类、继承和接口

    文章目录 二 Java基本程序结构 1 数据类型 2 运算符 3 循环语句 三 类 四 继承和接口 1 多态 2 抽象类 3 接口定义 4 接口增强 5 clone 实现的只是浅拷贝 二 Java基本程序结构 1 数据类型 2 运算符 3
  • Android 全局手势识别原理

    本文是对全局手势识别进行分析 那什么是全局手势呢 简单来说就是在任何界面都需要识别的手势 比如 在任何界面从手机屏幕左侧滑动 当前的界面会退出 类似 back 键 我们知道 在 Android 系统中一个 Activity 在显示时 当对屏
  • 关于程序员35岁的坎:年龄不是挡板,当你匹配了这个年纪该有的能力还有什么畏惧!

    前言 关于程序员干到35岁 会不会失业或者是说35岁的坎 这里我分享一篇不错的文章 希望能给大家带来一些帮助和思考 本文可能可以适用到其他端 不过由于自己是一名 Android 开发工程师 所以就姑且从一名普通的 Android 开发工程师
  • 使用jsp+servlet实现留言板(学习使用)

    1 前端jsp页面 1 1前端总体代码
  • 数据治理体系完整指南(值得收藏)

    01 数据治理之数据资产管理 数据资产与数据资产管理的定义 随着大数据时代的到来 人们已经认识到数据是一种无形的宝贵资产 谷歌 Facebook 阿里巴巴 腾讯等企业市值高达数千亿美元 不仅在于其独特的商业模式和市场垄断地位 更多的估值是给
  • 虚拟服务器转移到实体服务器,虚拟主机转移到云服务器

    虚拟主机转移到云服务器 内容精选 换一换 场景描述绑定到云服务器上 实现云服务器连接公网的目的 搭配服务弹性云服务器ECS或裸金属服务器 虚拟私有云绑定云服务器实例场景描述NAT网关通过与弹性公网IP绑定 可以使多个云主机 弹性云服务器 裸
  • APP内存泄漏导致崩溃测试实践

    内存泄漏崩溃原因 由于程序运行后没有及时回收无用对象 导致系统没有足够内存分配新对象 会引起APP崩溃 Android的GC机制 Android GC机制沿用了java的GC机制 当需要新内存去分配对象的时候而剩余不够的时候 会触发GC 把
  • for循环中,外循环1000、内循环100和外循环100、内循环1000哪个性能更高?

    1 直接上代码 public class Demo public static void main String args System out println firstTime Demo first 毫秒 255毫秒 System ou
  • laravel+element-ui+vue 搭建详细教程

    1 可用composer安装laravel框架项目 composer create project laravel laravel myblog 安装完成进入项目 cd myblog 2 安装前端资源和编译 npm install npm
  • 服务器监控功能(3种方案)

    服务器监控功能 3种方案 一 Actuator监控 1 添加依赖 2 application yaml配置 3 启动项目 访问 二 SpringBoot Admin 单体 1 Admin Server 端 2 Admin Client 端
  • android studio 安装说明

    转自 http www cnblogs com liuhongfeng archive 2015 12 30 5084896 html 1 下载android studio 含SDK版本 http www android studio or
  • node.js buffer的使用场景和方法及stream的应用

    buffer是什么 Node中 应用需要处理网络协议 操作数据库 处理图片 接收上传文件等 在网络流和文件的操作中 还要处理大量二进制数据 JavaScript自有的字符串远远不能满足这些需求 于是Buffer对象应运而生 Buffer作为
  • Java事务

    事务的ACID 1 原子性 原子性是说将事务看成一个整体 一个不可分割的单位 操作时要么同时成功 要么同时失败 2 一致性 一致性是指事务的前后数据的完整性保持一致 3 隔离性 隔离性是指多个用户并发访问数据库时 数据库给每一个用户开启一个
  • 什么是UTXO?

    经常看到区块链技术中提及UTXO 究竟什么是UTXO呢 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 搜索了半天 讲的都不太好理解 尤其是不明白UTXO比现在的记账方式有哪些优势 集百家之长 成一家之言 我来通俗地讲一讲吧
  • 网络安全(黑客技术)0基础学习手册

    目录梗概 一 自学网络安全学习的误区和陷阱 二 学习网络安全的一些前期准备 三 网络安全学习路线 四 学习资料的推荐 想自学网络安全 黑客技术 首先你得了解什么是网络安全 什么是黑客 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红
  • 用html+js实现一个简单的登录窗口

    文章目录 绘制UI界面 了解text文本框属性 UI界面效果 绘制登录后界面 实现登录验证脚本 运行效果 绘制UI界面 首先我们绘制出基本的不带功能的ui界面 这个界面需要创建一个表单 表单内包含一个username文本框 一个passwo
  • (六十六)支持向量机

    SVM的原理 SVM模型是将实例表示为空间中的点 这样映射就使得单独类别的实例被尽可能宽地明显间隔分开 然后将新的实例映射到同一空间 并基于它们落在间隔的哪一侧来预测所属类别 除了进行线性分类之外 SVM还可以使用所谓的核技巧有效地进行非线
  • java获取resource下的文件路径

    放了文件在 resources 目录下 只想拿到它的路径 详情如下 String path xxx class getClassLoader getResource targetFile txt getPath java获取文件目录 pom