当前位置: 首页 > news >正文

this.getClass().getResource(String) 路径问题

this.getClass().getResource(String) 路径问题    这里的默认当前路径是该类所在目录; this.getClass() 说明了一切!!

                                                                           找到类,就找文件;很显然和类同一目录下

                                                                           如果是在静态方法里,可以使用     类名.Class.getResource()

this.getClass().getClassLoader().getResource(String)  这里的路径就是项目的根目录 src/main下的 或者编译好的classes 下的;getClassLoader()说明了一切 ! !

                                                                           找到类,还得找到类的加载器,再找文件;很显然再根目录下

File f=new File(String);//路径问题和上述有点区别   这里默认当前路径是该工程下的第一层 与平时所说的src 在同一层

其实具体所指示的路径可能由于开发工具的相关配置而引起不同,此时可以打印一下f的路径看看

  其实很简单:       

/images/j.jpg    
/a.txt

有斜杠 表示从 项目 根目录下找

   

images/j.jpg
a.txt 

无斜杠表示从当前 执行 文件夹下寻找

难点在于哪里是根目录,哪里是当前文件夹下。。。。。。是编译好的文件噢!!!!! 不一定 是当前编写的代码所在的文件。为什么说不一定呢?

对于maven项目,根目录其实是在target 文件夹下的classes 或 test-classes

对于maven的web项目其目录结构应如下
maven
--src
--main
--java (在运行时,其内容会被编译到target的classes下,紧适合放java代码)
--包A
--包B
--resources (在运行时,下面内容会被拷贝的target下,因此放一些资源文件)
--文件夹C
--图片X
--图片J
--webapp
--test



--target (运行或编译时候自动生成)
--classes
--包A
--包B
--问价夹C
--图片X
--图片J
           --test-classes

如上图:根目录就是指classes/ 或test-classes/

test与main下面的文件夹结构类似,都一般包含java、resource等

假如我在main/resources 下面的文件价夹下放置 图片.jpg;通过test/java/中的类能否使用呢?

答案是可以的:

本人测试结果如下:

首次编译执行test:

main/resources与 test/resources 内都有要使用的文件,则使用拷贝到test-classes/下的文件
                     main/resources有 test/resources 内没有,则使用拷贝到classes/下的文件

非初次编译运行时:

假如我在第二次运行前删除了test-classes/下的文件 则他会去寻找classes/下的文件
若都删除则会报错,找不到

文件同步机制:src ----> target 单向同步



转载于:https://www.cnblogs.com/infoo/p/6403912.html

相关文章:

  • Git基础之(十四)——分支管理——解决冲突
  • MySQL学习2 使用docker建立mysql服务
  • 算法笔记_035:寻找最小的k个数(Java)
  • Linux 文件系统 的 学习
  • eclipse中内存溢出java.lang.OutOfMemoryError: PermGen space解决
  • Webpack入门教程十八
  • keepalived工作原理和配置说明
  • BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
  • centos7下安装samba服务器
  • DJ下载工具|DJ格式转换工具|剪切工具_已迁移
  • springMVC启动时,加载数据至内存中配置详解;
  • HTTP笔记(一)
  • Nginx开启OCSP Stapling
  • linux学习笔记
  • Linux常用命令——挂载 mount
  • angular2开源库收集
  • Java新版本的开发已正式进入轨道,版本号18.3
  • k8s 面向应用开发者的基础命令
  • Laravel5.4 Queues队列学习
  • LintCode 31. partitionArray 数组划分
  • magento2项目上线注意事项
  • mysql innodb 索引使用指南
  • PAT A1050
  • Vue 2.3、2.4 知识点小结
  • Vue 动态创建 component
  • Wamp集成环境 添加PHP的新版本
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 翻译:Hystrix - How To Use
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 每天一个设计模式之命令模式
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 日剧·日综资源集合(建议收藏)
  • 如何合理的规划jvm性能调优
  • 听说你叫Java(二)–Servlet请求
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #HarmonyOS:基础语法
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (0)Nginx 功能特性
  • (1)SpringCloud 整合Python
  • (1)虚拟机的安装与使用,linux系统安装
  • (2)Java 简介
  • (c语言)strcpy函数用法
  • (poj1.2.1)1970(筛选法模拟)
  • (备忘)Java Map 遍历
  • (二十四)Flask之flask-session组件
  • (六)软件测试分工
  • (排序详解之 堆排序)
  • (三)Honghu Cloud云架构一定时调度平台
  • (新)网络工程师考点串讲与真题详解
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...