在java项目中经常会有需要读取项目中文件的情形,如:读取配置文件内容等,那么应该如何获取文件路径呢?
在java中有一个方法:getResource(String name) 用于获取文件资源。下面看一下如何获取文件路径:
项目结构如下:
代码如下:
public class TestPath {
public static void main(String[] args){
String path1 = TestPath.class.getResource("").getPath();
String path2 = TestPath.class.getResource("/").getPath();
String path3 = TestPath.class.getClassLoader().getResource("").getPath();
System.out.println(path1);
System.out.println(path2);
System.out.println(path3);
}
}
运行结果如下:
path1: /D:/testPath/out/production/testPath/test/
path2: /D:/testPath/out/production/testPath/
path3: /D:/testPath/out/production/testPath/
在上面的例子中,/D:/testPath/out/production/testPath/ 是项目的根目录
- Class.getResource("")直接获取到类所在目录
- Class.getResource("/")则是获取到根目录
- getClassLoader().getResource("")也获取到根目录
注意:在使用 getClassLoader() 时,getResource() 的参数不能以 "/" 开头。
至于他们的原理和调用方式,本人目前还只能意会哈,建议大家看看类加载器的知识点,附录中的参考文档可以学习一下。
参考文档:https://blog.csdn.net/zhangshk_/article/details/82704010