开始前先贴一下项目结构


 public class TestLocation {
@Test
public void test1(){
String s1 = Objects.requireNonNull(TestLocation.class.getResource("")).toString();//------------------
out.println(s1);
String s2 = Objects.requireNonNull(TestLocation.class.getResource("/")).toString();
out.println(s2);
}
}

从这里可以看出区别
TestLocation.class.getResource("")
TestLocation.class.getResource("/")

classes是编译后的文件夹,

  getResource中啥也不写,就是从当前类编译后所在的目录查找

  getResource中写 / ,就是从编译后文件夹的根目录查找

现在我们做个测试,查找test目录下编译后的文件

结果和我预想的一样。


 @Test
public void test2(){
String s1 = Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource("")).toString();
out.println(s1);
}

可以看出这个结果和①处相同。

再来做个测试

两张图的区别在于

  后者我再getRes的时候加上了包名前缀!

  正如我注释中写的, 类.class.getRes只在类所在的目录中查找资源文件,即使加上了包名前缀也没效果。


那么下一个问题,

Thread.currentThread().getContextClassLoader().getResource()是如何查找文件的?---------------------------未完待续

对java中路径的一些理解的更多相关文章

  1. 11. java中路径/和\的区别

    一般可以认为是"/"的作用等同于"\\"在java中路径一般用"/"windows中的路径一般用"\"linux.uni ...

  2. Java中线程同步的理解 - 其实应该叫做Java线程排队

    Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可 ...

  3. java中线程同步的理解(非常通俗易懂)

    转载至:https://blog.csdn.net/u012179540/article/details/40685207 Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运 ...

  4. java中路径的获取

    网上摘录 (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getReque ...

  5. 微冷的雨之Java中的多线程初理解(一)

    在讲解多线程前,我们必须理解什么是多线程?而且很多人都会将进程和线程做对比. 进程和线程 进程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在 ...

  6. 对Java中字符串的进一步理解

    字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字 ...

  7. Java中的ThreadLocal深入理解

    提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和 ...

  8. Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解

    我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...

  9. java中回调函数的理解

    一,案例一 "通常大家说的回调函数一般就是按照别人(李四)的定好的接口规范写,等待别人(张三)调用的函数,在C语言中,回调函数通常通过函数指针来传递:在Java中,通常就是编写另外一个类或类 ...

随机推荐

  1. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周

    目录 MyCP2 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.心得体会 十.参考资料 MyCP2 一.题目 ...

  2. Vue.js——快速入门Vuex

    一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起 ...

  3. Redis集群方案怎么做?

    转载自:https://www.jianshu.com/p/1ecbd1a88924 Redis集群方案 Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促 ...

  4. !!在js中的用法

    var obj = ""; //undefinedconsole.log(!!obj);  //false(强制转换成Boolean类型)

  5. python迭代-如何实现反向迭代

    如何实现反向迭代 问题举例 实现一个连续浮点数发生器FloatRange,根据给定范围(start, end)和步进值(step) 产生一系列连续的浮点数,如FloatRange(3.0, 4.0, ...

  6. 安卓系统广播暴露设备信息-Android System Broadcasts Expose Device Information

    Android device details are being exposed to running applications via Wi-Fi broadcasts in the mobile ...

  7. UML第三次作业

    一.PlantUML类图 语法学习小结 关系上的标识:在关系之间使用标签来说明时, 使用 :后接 标签文字.对元素的说明,可以在每一边使用 "" 来说明. 1 @startuml ...

  8. 69.js--点击事件等比例弹出层div

    html:<!--弹出层导航栏--> <div class="public-nav-content"> <ul> <li><a ...

  9. 3#Java案例

    以下内容引用Github地址https://github.com/DuGuQiuBai/Java/blob/master/day01/code/02_%E5%B8%A6%E6%B3%A8%E9%87% ...

  10. C#保存日志文件到txt中,可追加保存,定时删除最后一次操作半年前日志文件

    /// <summary> /// 输出指定信息到文本文件 /// </summary> /// <param name="msg">输出信息& ...