Java路径与资源路径

读取文件是我们在编程中经常需要用到的操作,怎么读取一个文件呢?
那么想要读取一个文件就必须要知道这个文件在哪,也就是路径。到这里我们已经有了很清晰的概念了,也就是说我们只要能准确的描述文件的路径,那么程序读取文件将不再是任何问题。

于是乎我们有了绝对路径,既然想要读取文件,那就让文件的绝对路径暴露出来就好了啊!
用new File(传入文件的绝对路径就好。

但是我们在开发的时候常常是开发代码的环境和真正运行的环境是分开的,如果我的配置文件写在D盘,而我的java程序却要在Linux下运行,根本没有D盘!那么这时候该这么办呢?于是相对路径产生了,既然是相对,那总需要知道是相对于谁吧,知道了相对于谁我就能算出这个文件真正的位置是在哪里!

于是new File(“.”)诞生了,相对于谁????!!!在java中,这个路径是相对于加载这个程序的虚拟机的启动位置,这很重要!!!!我举个栗子,当你用ide一类开发环境执行你写的程序的时候,这个虚拟机启动的位置很有可能是你工程所在的目录(也是就是说当你用ide开发的时候程序能找到你写在工程目录下的配置文件,而当你将程序打包而没有将文件打包进去的话,程序是找不到文件的),而当你用java 命令去执行的时候,虚拟机启动的位置,是你敲java命令时,控制台前面写的路径。最奇妙的是当你执行web程序的时候,这个位置是tomcat的bin目录!!!为啥是这?一脸懵逼,,,,,很简单,tomcat执行也是需要虚拟机的,当我们执行startup.bat的时候就是在启动虚拟机,然后tomcat去加载并执行我们的代码,这就导致了很多人在开发web程序的时候找不到配置文件的问题。

好了,说了以上这么多基本上解决了我们关于文件路径的问题。
那么,什么是资源文件路径呢?(我的理解就是一些代码中可能用到的文件,其实我觉得字节码.class 文件也应该算作一种资源)通过class.getResource(“.”)我们能够得到某个类的类目录,当我们写class.getResource(“/”)我们得到的是类加载器加载这些类所在的目录!(这个路径就是class.getClassLoader().getResource(“.”)的所在目录)。
在intelij中开发的时候,我们放在resource目录中的文件都会被拷贝到这个路径下(当然,具体拷贝哪些文件是compile的配置决定的,.properties.xml等文件时默认会拷贝的,这个可以看intelij的help文件)

至此,文件路径和资源文件到底是个啥就说明白了

总结:我们一定要尽可能将问题简单化,而不是这种情况,那种情况的复杂化。从高处,俯瞰所有的知识点是最容易记忆的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值