引言:众所周知,在java中可以使用
class.getResource("")
方法来获取src的绝对路径。但是在很多情况下,由于class的位置,是否是静态方法调用,项目包含关系,单元测试关系,以及是否是web环境运行等等(甚至很多情况下还要获取class的
getClassLoader().getResource("")
)
,获取到的,往往都不是我们期望得到的结果,路径不对,严重的会直接导致程序运行崩溃。而且往往不出错还不知道哪里出错了。为此,我自己写了一个工具类,根据某一个类的package来获取相应的src路径,这样,在各种环境下获取src路径,要相对更加稳定些(可能在有些情况下还会有所出入,但是可以在此抛砖引玉嘛)
代码如下:
/**
* 获取系统的src绝对路径
* @return
*/
public static String getSrcPath(){
Class clazz = Customer.class;//可以用项目中任意一个存在的类,推荐使用实体类
String srcPath = clazz.getResource("").getPath();//获取当前类的所在的绝对路径
String pn = clazz.getPackage().getName();//获取类的包名
<span style="white-space:pre"> </span>/* 根据包名与绝对路径进行src路径的判断 */
if(File.separator.equals("/")){
pn = "/" + pn.replace(".","/");
}else {
if(srcPath.contains(".")){
pn = "\\" + pn.replace(".","\\");
}else if(srcPath.contains("/")){
pn = "/" + pn.replace(".","/");
}
}
String str = srcPath.substring(srcPath.lastIndexOf(pn));
String str1 = srcPath.substring(0,srcPath.lastIndexOf(pn));
return str1 + str.replace(pn,"");
}
ok,结束。