1. 程式人生 > >java獲取專案路徑

java獲取專案路徑

經常需要在專案中進行路徑的獲取,目前就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("/");

差不多就是這些了,後續如果有發現更簡便地獲取到路徑的方法,再做補充。