java获取项目路径

时间:2021-12-09 14:43:07

经常需要在项目中进行路径的获取,目前就java项目和web项目中如何获取路径进行说明。


java项目:

System.out.println(System.getProperty("user.dir"));

获取项目文件夹的根目录,如果在web中使用,则可能获取到不同的路径,我试过把web项目部署在tomcat下,输出则是tomcat/bin的目录


File directory = new File("");//设定为当前文件夹   
try{
    System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exception e){

    // TODO

}

获取到项目根目录,同样的在web项目,部署在tomcat,获得的是tomcat/bin的目录


web项目

如果有request对象:

request.getContextPath()
request.getSession().getServletContext().getRealPath()

如果没有request对象:类名.class.getClassLoader().getResource("/").getPath();//获取到WEB-INF/classes绝对路径,并且第一个字符是/,例如:/E:/MyEclipseWorkspace/项目名/WebRoot/WEB-INF/classes/,需根据需要截取,下面的截取可以参考:

String classPath = 类名.class.getClassLoader().getResource("/").getPath();
String rootPath  = "";

if("\\".equals(File.separator)){//windows下
rootPath  = classPath.substring(1,classPath.indexOf("/WEB-INF/classes"));
rootPath = rootPath.replace("/", "\\").replaceAll("%20", " ");

} else if("/".equals(File.separator)){//linux下
rootPath  = classPath.substring(0,classPath.indexOf("/WEB-INF/classes"));
rootPath = rootPath.replace("\\", "/").replaceAll("%20", " ");
}

如果在servlet中的话,

System.out.println(this.getServletContext().getRealPath("/"));//获取到webroot目录的绝对路径,下面的那个方法也是

this.getServletConfig().getServletContext().getRealPath("/");


差不多就是这些了,后续如果有发现更简便地获取到路径的方法,再做补充。