importjava.io.File;/*** new File("..\path\abc.txt") 中的三个方法获取路径的方法
* 1: getPath() 获取相对路径,例如 ..\path\abc.txt
* 2: getAbslutlyPath() 获取绝对路径,但可能包含 ".." 或 "." 字符,例如D:\otherPath\..\path\abc.txt
* 3: getCanonicalPath() 获取绝对路径,但不包含 ".." 或 "." 字符,例如 D:\path\abc.txt*/
public classPathUtil {private staticString webRootPath;private staticString rootClassPath;
@SuppressWarnings("rawtypes")public staticString getPath(Class clazz) {
String path= clazz.getResource("").getPath();return newFile(path).getAbsolutePath();
}public staticString getPath(Object object) {
String path= object.getClass().getResource("").getPath();return newFile(path).getAbsolutePath();
}public staticString getRootClassPath() {if (rootClassPath == null) {try{
String path= PathUtil.class.getClassLoader().getResource("").toURI().getPath();
rootClassPath= newFile(path).getAbsolutePath();
}catch(Exception e) {
String path= PathUtil.class.getClassLoader().getResource("").getPath();
rootClassPath= newFile(path).getAbsolutePath();
}
}returnrootClassPath;
}public staticString getPackagePath(Object object) {
Package p=object.getClass().getPackage();return p != null ? p.getName().replaceAll("\\.", "/") : "";
}public staticFile getFileFromJar(String file) {throw new RuntimeException("Not finish. Do not use this method.");
}public staticString getWebRootPath() {if (webRootPath == null)
webRootPath=detectWebRootPath();returnwebRootPath;
}public static voidsetWebRootPath(String webRootPath) {if (webRootPath == null)return;if(webRootPath.endsWith(File.separator))
webRootPath= webRootPath.substring(0, webRootPath.length() - 1);
PathUtil.webRootPath=webRootPath;
}private staticString detectWebRootPath() {try{
String path= PathUtil.class.getResource("/").toURI().getPath();return newFile(path).getParentFile().getParentFile().getCanonicalPath();
}catch(Exception e) {throw newRuntimeException(e);
}
}
}