以下给出获取JAVA路径的常用方法,用于解决文件路径获取的问题
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//用户的当前工作目录,一般不建议使用这种方式
System.out.println("System.getProperty(\"user.dir\")======"+System.getProperty("user.dir"));
//当前类文件的URI目录
System.out.println("test2.class.getResource(\"\")========"+test2.class.getResource(""));
//当前的classpath的绝对URI路径。
System.out.println("test2.class.getResource(\"/\")=========="+test2.class.getResource("/"));
//同上,当前的classpath的绝对URI路径,推荐使用
System.out.println("Thread.currentThread().getContextClassLoader().getResource(\"\")====="+Thread.currentThread().getContextClassLoader().getResource(""));
//同上,当前的classpath的绝对URI路径。
System.out.println("test.class.getClassLoader().getResource(\"\")=========="+test2.class.getClassLoader().getResource(""));
//同上,得到的也是当前ClassPath的绝对URI路径。
System.out.println("ClassLoader.getSystemResource(\"\")==========="+ClassLoader.getSystemResource(""));
//path不能以'/'开头时,path是指类加载器的加载范围,在资源加载的过程中,使用的逐级向上委托的形式加载的,'/'表示Boot ClassLoader中的加载范围,因为这个类加载器是C++实现的,所以加载范围为null
System.out.println(test2.class.getClassLoader().getResource(""));
System.out.println(test2.class.getClassLoader().getResource("/"));
}
}
输出结果如下
System.getProperty("user.dir")======C:\test11\eclipse\workspace\log4jtest
test2.class.getResource("")========file:/C:/test11/eclipse/workspace/log4jtest/bin/log4jtest/
test2.class.getResource("/")==========file:/C:/test11/eclipse/workspace/log4jtest/bin/
Thread.currentThread().getContextClassLoader().getResource("")=====file:/C:/test11/eclipse/workspace/log4jtest/bin/
test.class.getClassLoader().getResource("")==========file:/C:/test11/eclipse/workspace/log4jtest/bin/
ClassLoader.getSystemResource("")===========file:/C:/test11/eclipse/workspace/log4jtest/bin/
file:/C:/test11/eclipse/workspace/log4jtest/bin/
null
推荐文章
http://blog.youkuaiyun.com/shendl/article/details/1427475