linux与windows下Web工程目录获得方式

我们可以通过枚举来定义获得web-inf 和 classpath的路径

先看下面我自己写的一个枚举

public enum EnumClassPath {
    /*
     * windows 获得classpath路径,后面加"resources\\initweb\\config_webinfo.properties"
     * windows 获得web-inf 路径
     */
    WinClassPath(Thread.currentThread().getContextClassLoader().getResource("").toString().replace('/', '\\').replace("file:", "").replace("%20", " ").substring(1).replace("%20", " ")),
    WinWebInf(Thread.currentThread().getContextClassLoader().getResource("").toString().replace('/', '\\').replace("file:", "").replace("classes\\", "").replace("%20", " ").substring(1).replace("%20", " ")),
    /*
     * linux 获得classpath路径,后面加"resources\\initweb\\config_webinfo.properties"
     * linux 获得web-inf 路径
     */
    LinuxClassPath(Thread.currentThread().getContextClassLoader().getResource("").toString().replace("file:", "").replace("%20", " ")),
    LinuxWebInf(Thread.currentThread().getContextClassLoader().getResource("").toString().replace("file:", "").replace("classes/", "").replace("%20", " "));
    

    private String classpath;
    private EnumClassPath(String classpath){
        this.classpath = classpath;
    }

    public String getClassPath() {  
        return this.classpath;  
    }
}

这样,我们就可以很轻松的得到windows和linux下 web-inf和classpath的路径


下面的代码是上面代码的扩展

public enum EnumPath {
    spot(path_spot()),        //对点的分割  win: /。  linux:\\。
    config_webinfo(path_config_webinfo()),        //获得配置文件
    loginregister_log(path_loginregister_log()),        //获得日志文件路径
    Eamil(path_email()),        //获得email的参数
    webinf(path_webinf()),        //获得web-inf地址
    classpath(path_class()),        //获得classpath地址
    arhtmlpath(path_arhtml()),        //获得html地址
    updatepath(path_update());        //上传的图片地址,相对于web-inf的目录地址
    
    private String path;
    
    private EnumPath(String path){
        this.path = path;
    }
    
    private static String path_webinf() {
        if(System.getProperty("os.name").equals("win")){
            return EnumClassPath.WinWebInf.getClassPath();
        }else{
            return EnumClassPath.LinuxWebInf.getClassPath();
        }
    }
    private static String path_class() {
        if(System.getProperty("os.name").equals("win")){
            return EnumClassPath.WinClassPath.getClassPath();
        }else{
            return EnumClassPath.LinuxClassPath.getClassPath();
        }
    }
    private static String path_update() {
        if(System.getProperty("os.name").equals("win")){
            //这里获得配置文件的路径,我这里先直接写
            return "\\upload\\images\\";
        }else{
            return "/upload/images/";
        }
    }

    private static String path_spot() {
        if(System.getProperty("os.name").equals("win")){
            return "/.";
        }else{
            return "\\.";
        }
    }

    private static String path_email() {
        if(System.getProperty("os.name").equals("win")){
            return EnumClassPath.WinClassPath.getClassPath()+"email.properties";
        }else{
            return EnumClassPath.LinuxClassPath.getClassPath()+"email.properties";
        }
    }

    private static String path_config_webinfo(){
        if(System.getProperty("os.name").equals("win")){
            return "WEB-INF\\classes\\initweb\\config_webinfo.properties";
        }else{
            return "WEB-INF/classes/initweb/config_webinfo.properties";
        }    
    }
    private static String path_arhtml(){
        if(System.getProperty("os.name").equals("win")){
            return "\\theme\\freemaker\\html\\article\\";
        }else{
            return "/theme/freemaker/html/article/";
        }    
    }
    
    private static String path_loginregister_log(){
        if(System.getProperty("os.name").equals("win")){
            return EnumClassPath.WinWebInf.getClassPath()+"loginregister\\log";
        }else{
            return EnumClassPath.LinuxWebInf.getClassPath()+"loginregister/log";
        }
        
    }
    
    
    
    public String getClassPath() {  
        return this.path;  
    }
}

个人认为主要的方法是 path_webinf()和path_class() 这两个方法,开发者将不必再关心当前操作系统是windows还是linux,将由系统自动判断,并且给出对应的地址

以上代码仅供参考,根据自己的实际情况增删即可。


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img