Java獲取根目錄路徑有很多種方法,但是根據(jù)應(yīng)用程序所部署的環(huán)境和中間件不同,獲取的路徑可能也不同。下面我提供一種方法,解決這個(gè)問題。
String path = InterfaceConfig.class.getResource("").getPath().toString();//獲取類所在路徑
if (path.contains(".jar")) {
path = path.replace("/", File.separator);//將/換成\,如果是linux環(huán)境,還是/
path = path.replace("file:", "");//去掉file
path = path.replace("classes\\", "");//去掉classes\
if (path.startsWith("\\")) {
path = path.substring(1);//去掉第一個(gè)\,如:、\D:\TongWeb... ,在linux上沒有這種情況
}
path = path.split("WEB-INF")[0]+"WEB-INF"+File.separator+"classes";
} else {
path = InterfaceConfig.class.getResource("/").getPath().toString();//獲取根路徑
}
File file = new File(path + File.separator + "InterfaceConfig.xml");
這段代碼什么意思呢?
1、第一行是獲取InterfaceConfig.class這個(gè)類所在的路徑,這個(gè)InterfaceConfig.class可以換成你這段代碼所在的類。
2、判斷路徑中是否包含.jar,就是說這段代碼所在的類最終構(gòu)建的時(shí)候是不是打入jar包里,如果在jar包里,就去掉一些內(nèi)容,如file: ,classes\\,
然后根據(jù)WEB-INF切割,并拼出根目錄。
3、如果沒有打入jar包,那更簡單了,直接通過獲取根路徑方法就解決了。
4、最后讀取classes路徑下的InterfaceConfig.xml配置文件。