java路径整合

本文暂不分析模块这一特殊情况

本文分两种路径来讲

  • 相对路径 为 “文件路径不以 / 开头” 的形式
  • 绝对路径 为 “文件路径以 / 开头” 的形式

javase

在这里插入图片描述

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

  • 相对路径为项目根目录开始
  • 绝对路径 为C盘根目录开始
    在这里插入图片描述
    使用类加载器.getResource的话
  • 相对路径为项目部署之后的根目录(classes)开始
  • 绝对路径 不知道…

使用 class对象.getResource的话

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

javaweb

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

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

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

Spring

classpath: 获取类路径下的配置文件 所谓类路径,spring在编译之后,默认会到项目目录下target目录中,而类代码编译之后的class文件保存在target/classes下,这个classes就是类路径

file: 获取文件路径下的配置文件 文件路径就是项目路径,和src同级

总结

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yionr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值