在IDEA中获取文件绝对路径(通用方式)

news2024/10/5 17:38:55
package com.javase.reflect;

/**
 * 关于文件路径问题
 *     以前我们都是在IDEA中,依据IDEA默认的当前路径:project的根来获取文件,但是这种方法有它的局限性,那就是当代码离开了IDEA
 *     换到了其他位置,我们就找不到文件了,也就是说这个文件路径就失效了。那么我们怎么做,才能令代码换位置后文件路径仍然有效呢?
 *
 *     下面我们来说一种比较通用的方式,即使代码的位置变了,使用该方法获取的文件路径仍然有效。
 *          注意使用该方法有一个前提条件那就是:
 *              文件必须放在类路径之下(也就是必须放在src之下)【一定要记住】
 *          使用这种方式获取的是文件的绝对路径。
 *
 *     使用这种方式获取文件绝对路径很是麻烦,是不是可以直接写上文件的绝对路径呢?
 *     回答:不可以,这种获取文件绝对路径的方式同样适用于linux系统,而linux系统中没有盘符,你直接写的绝对路径在linux中不适用,
 *     但是这种方式仍然适用。
 */
public class ReflectText05 {
    public static void main(String[] args) {
        /*
            解释:
                Thread.currentThread()获取的是当前线程对象
                getContextClassLoader()是线程对象的方法,获取的是当前线程的类加载器对象
                getResource()是类加载器对象的方法。它的作用是获取资源,当前线程的类加载器默认从类的根路径下对资源进行加载
                getPath()相应的资源加载完成之后,通过getPath()方法获取到资源的绝对路径。
        */
        //dp.properties在IDEA中所处的目录结构如图一
        String path = Thread.currentThread().getContextClassLoader()
                .getResource("com/javase/bean/dp.properties").getPath();
        System.out.println(path);
//        /C:/Users/Administrator/IdeaProjects/javase/out/production/chapter07/com/javase/bean/dp.properties
        //info.properties在IDEA中所处的目录结构如图二
        String path2 = Thread.currentThread().getContextClassLoader().
                getResource("info.properties").getPath();
        System.out.println(path2);
//        /C:/Users/Administrator/IdeaProjects/javase/out/production/chapter07/info.properties
    }
}

 

                         图一                                                                        图二

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Tensorflow 2.x 使用 MobileNetV2 微调模型优化训练花卉图像识别模型

一、模型微调 上篇文章我们通过搭建三层卷积模型,训练了花卉图像识别模型,最后经验证集验证后准确率大约为 75% ,本篇文章对该数据集进行优化,提高识别的准确度。本篇文章中对于数据集的读取强化不做过多的介绍了,大家…

免拆机,Kindle固件版本5.10.3~5.13.3如何越狱?简单、易操作版

前言 之前有出过Kindle的越狱教程: 无需拆机,Kindle 全系列 5.12.2.2 ~ 5.14.2版本如何越狱?如何安装第三方插件 确实可以越狱,使用的漏洞也是: KindleDrip — From Your Kindle’s Email Address to Using Your C…

ubuntu18.04下mysql数据库C语言API封装

mysql C语言API操作数据库比较繁琐,可以将其封装起来,这样使用比较方便,下面是一种封装方式。 目录 1.连接封装 2.连接池封装 3.测试代码 1.连接封装 将数据库连接进行封装,主要提供如下接口: (1&…

L2-030 冰岛人

2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀&#x…

torchnet.meter使用教程

前言 最近项目开发过程中遇到了torchnet.metertorchnet.metertorchnet.meter来记录模型信息,搜了好多篇博客潦潦草草,没有一点干货,于是根据官方代码和官方文档,基于自己的理解,制定了使用教程: torchnet简介 torch…

一句话实现报表生成PDF同时通过outlook发送

元旦节快乐 哈喽,大家2023年好呀! 今天,元旦最后一天,给大家分享什么好玩的示例呢? 让我来想想,嗯?这样可以吗?一句话就实现将报表生成PDF,同时可以编辑一些信息并通过…

【源码分享】java多用户B2B2C商城源码带WAP手机端源码

分享一款非常不错的java多用户B2B2C商城源码,带WAP手机端源码,源码地址在文末。 需要源码学习,可私信我获取。 一、技术构架: 开发语言: Java1.7 数 据 库 : MySQL5.5 数据库持久层:阿里巴巴…

车载诊断协议UDS——会话模式状态机Session

UDS之Session服务 会话模式管控是汽车电子诊断范畴很重要的两个状态机之一(另一个是安全访问),不同的会话模式是用来区分诊断服务执行权限。 一位非常尊敬的业内前辈曾举如下例子来形容这个状态机:不同的场景,喝对应的酒! 公司商务场合下,对应的酒是红酒;长辈酒桌上,对…

Redis 哨兵模式

哨兵是一个分布式系统,你可以在一个架构中运行多个哨兵进程,这些进程使用流言协议来接收关于Master主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。 一、哨兵模式概述 1.1…

ubuntu做系统常见出错处理方法1

1.不能分区解决办法(安装ubuntu没有出现安装选项,也就是找不到硬盘分区怎么办?-爱码网) 解决办法是进入bios模式(一般都是重启时反复按f12,不同电脑型号可自行查阅)把硬盘模式从raid调整为ahci(System configuration–&#xff…

方差和标准差的意义

文章目录案例:箭靶案例:身高案例:身高体重在此前一篇文章 《算法效果评估:均方根误差(RMSE)/ 标准误差》中,我们介绍了方差/标准差的计算方法,也点出了它们是用来“度量数据离散程度…

linux系统中wifi驱动的配置与编译实现方法

大家好,今天主要和大家聊一聊,如何使用linux系统中的WIFI驱动完成相应的实验。 目录 第一:WIFI驱动添加与编译方法 第二:将驱动代码添加到linux内核中 第三:配置Linux内核 第四:编译WIFI驱动 第一&…

YOLOv5更换骨干网络之 MobileNetV3

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/xiaolai-sqlai/mobilenetv3 我们展示了基于互补搜索技术和新颖架构设计相结合的下一代 MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和 N…

MySQL基础篇

MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以“…

网络类型实验

1.先配ip [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1]ip add 192.168.1.1 24 [R1-GigabitEthernet0/0/1]int s 4/0/0 [R1-Serial4/0/0]ip add 12.1.1.1 24 其他同理 2.写三条缺省指向R2来使网络通 [R1]ip route-static 0.0.0.0 0 12…

【王道操作系统】3.1.1 什么是内存?进程的基本原理,深入指令理解其过程

什么是内存?进程的基本原理,深入指令理解其过程 文章目录什么是内存?进程的基本原理,深入指令理解其过程1.什么是内存?有何作用?2.进程运行的基本原理2.1 指令的工作原理---操作码若干参数2.2 逻辑地址(相对…

C++类和对象3:关于类内部的更多细节

目录 初始化列表: explicit关键字 ​编辑 static成员 友元 内部类 匿名对象 拷贝对象时的一些编译器优化 我们已经接触过了构造函数,其功能可以很方便的帮助我们为变量赋值,但是在这里并不是初始化,因为一个构造函数可以为几…

02 Hadoop概述

Hadoop概述1、Hadoop是什么2、Hadoop版本3、HDFS、YARN、MapReduce(1) HDFS(2)YARN(3)MapReduce(3)Hadoop模块之间的关系1、Hadoop是什么 是一个由Apache基金会开发的分布式系统基础…

动态规划是个好东西:编辑距离

力扣:72. 编辑距离 这道题目让我狠狠的了解了动态规划,这玩意是真强。 题目描述很简单: 这道题正常来说,我们要考虑这个字符怎么换,长度不一怎么找…等等问题,但是这样做会发现很困难,显然这是…

Vert.x 核心概念及事件模型

Vert.x是基于事件的,提供一个事件驱动编程模型 使用Vert.x作为服务器时,程序员只要编写事件处理器event handler即可。(当TCP socket有数据时,event handler被创建调用) 另外它还可以在以下几种情况激活: …