java路径整合

相信广大coder在初期都经历过 路径的折磨, 在java初高级的时候还好,然而,到了javaweb之后爆发,并不是javaweb里面路径花里胡哨,而是javaweb里有一部分路径不涉及web,则又会回到java 前期的路径 这两者不同容易搞混,今天 为自己 准备这一份 java比较全的路径指南
不分析模块
本文分两种路径来讲

  • 相对路径 为 文件路径不以 / 开头
  • 绝对路径 为 文件路径以 / 开头

javase

java路径整合

类似inputstream,outputstream这些输入输出流,传入的文件路径和File传入的效果相同,这一类

  • 相对路径为项目根目录开始
  • 绝对路径 为C盘根目录开始
    java路径整合
    使用类加载器.getResource的话
  • 相对路径为项目部署之后的根目录(classes)开始
  • 绝对路径 不知道…

使用 class对象.getResource的话

  • 相对路径 为类路径目录开始
  • 绝对路径 为项目部署之后的根目录(classes) 开始 和类加载器.getResource默认目录相同

javaee

脑子一抖决定将前面的内容 原封不动的带到web端重新来一遍,结果…
java路径整合
java路径整合
真的是发生了相当不得了的事嗷,
new File的相对路径居然跳到了匪夷所思的tomcat/bin下去了…
之前类加载器的getResource 绝对路径居然在这里和相对路径一样…(之前这个是null)

好的这个先放一边,以后再研究 先看看javaweb下常用的获取路径的几个方法的返回值吧

  • servletContext.getContextPath 中文翻译就是获取上下文路径,也就是应用名
  • servletContext.getRealPath()不管是默认目录还是根目录,都指向了部署之后的应用根目录

总结

综上,如果要获取一个文件的路径,这个文件和项目是绑定的话,那是没法直接传字符串获取的(假设项目会随意移动),剩下的就只有类加载器来获取 or class对象获取 由于类加载器获取存在未知,所以应该主要用class对象.getResource来获取,相对路径为类路径,绝对路径为项目根目录开始的路径
在web开发的时候,涉及到IO,文件会被部署在classes文件夹里面的(配置文件部署之后就在classes下,具体路径根据resources的路径来,resources映射到部署之后的目录就等同于classes)也用class来获取比较好,如果不是在classes文件夹里面的, 则是用servletcontext.getRealpath来获取,这个方法无所谓相对路径还是绝对路径,都是从应用的根目录开始

(暂时先到这里 以后再更新)