关于稳定的获取src路径的心得与分享

引言:众所周知,在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();//获取类的包名

	/* 根据包名与绝对路径进行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,结束。



你可能感兴趣的:(JAVA)