一、不借助类的直接相对路径(一般不用)
下面两行的效果一样
上面一行就是相对于当前工程目录(此种方法一般不用,因为,发布的时候src目录就不存在了)
下面一行是绝对路径
二、借助类的获取相对路径(看编译后的文件路径)
*此时,不可以采用上面的src/*路径,因为编译后src目录不存在
使用斜杠表示项目的根目录
下面出现了两种使用方法:
- 一种是使用“/”,推荐使用这种
- 另一种是使用“./”,这种方法不推荐,(因为有时候这种方法会不允许)
下面两张图分别是允许使用“./”,和不允许使用”./“的情况,但是都允许使用”/“
三、小结
上述两种使用方法基本上可以满足平常使用需要
留有问题
但是,还会有一些其他情况,由于没有摸索清楚,所以没有写上去。比如有时候,第二种方法中的”/”也可以直接去掉,有时候却不行;有时候第二种方法中的“./”可以使用,“../”也可以使用,但有时候却不行。
若有高手,敬请指教,等待帮忙更新Thanks♪(・ω・)ノ
补充
几周过去了,又遇到了相对路径的问题,回头重新看了博客,感觉之前的理解还不够好,又重新整理了一下。
首先,将路径问题重新进行分类:①相对的是计算机的盘符根目录(如“D:”)②相对当前项目的根目录③相对classpath路径④Properties获取资源文件⑤绝对路径
实验环境
相对的是计算机的盘符根目录(如“D:”)
1 | File file2 = new File("/text"); |
上述代码读取的就是从D盘,可见“/”和“/内容“代表的是盘符根目录
相对当前项目的根目录
1 | File file1 = new File("./text"); |
上述代码读取的位置是相对项目的根目录位置
相对classpath路径
什么是classpath路径?
什么是classpath路径?或者说classpath路径指向的是哪里呢?
回答:最终下图中的src源文件夹、resource资源文件夹****中的内容都会被打包到输出文件夹tearget/classes文件夹下(java和resource就不在了)**
有哪些获取classpath路径的方法呢?
1 | System.out.println(file3.getAbsolutePath()); // 在下面截图中,未展示该结果 |
使用Properties获取资源文件
使用下面代码可以获取到resource资源文件下的资源文件
1 | Properties properties = new Properties(); |
绝对路径
绝对路径就一句话:从盘符开始的URL路径
第二次小结
经过两次的大学习、大整理,关于java的相对路径总的来说就三个方面(或者说是三个类型):
相对jdk所在盘符根目录
相对项目所在的根目录
相对classpath所在的路径(需要理解classpath路径指向的是哪里)
附加一个Properties获取资源文件的类