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("/");
差不多就是這些了,後續如果有發現更簡便地獲取到路徑的方法,再做補充。