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 单向同步

    

最新文章

  1. BaseDao
  2. loadrunner解决“服务器正在运行中”方法
  3. 树莓派 B+ Yeelink实现图像监控
  4. bzoj 2761 平衡树
  5. java实现图片与base64字符串之间的转换
  6. JavaScript要点(十二) HTML DOM 事件
  7. 各种oracle10g下载地址(官网网页上好像找不到了)
  8. Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考
  9. php的array数组 -------方法array_column()
  10. SharePoint 修改用户属性User Name
  11. ASP.NET Core 2.0系列学习笔记-NLog日志配置文件
  12. BZOJ5479: tree
  13. sqlserver--install/uninstall
  14. Swift 表达式
  15. arcview、arcinfo、arceditor的区别
  16. UVA-1152 4 Values whose Sum is 0 (二分)
  17. 量化投资策略:常见的几种Python回测框架(库)
  18. 如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题
  19. 洛谷P3258松鼠的新家
  20. 能量项链 (区间DP)

热门文章

  1. Windows 用来定位 DLL 的搜索路径
  2. C/C++编程语言制作《游戏内存外挂》
  3. redis(十二):Redis 集合(Set)
  4. 【IDEA】创建maven项目,webapp没有被标识,无法识别
  5. Flink之对时间的处理
  6. spring oauth2获取当前登录用户信息。
  7. node name配置错误,导致grid日志在报警
  8. Disease Manangement 疾病管理
  9. reCAPTCHA无法加载?一个小工具就可以轻松解决!
  10. 有关 Session 的那些事儿