/**
* Copyright (c) 2011-2012, James Zhan 詹波 (jfinal@126.com).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jfinal.util;
import java.io.File;
import java.io.IOException;
/**
* new File("..\path\abc.txt") 中的三个方法获取路径的方法
* 1: getPath() 获取相对路径,例如 ..\path\abc.txt
* 2: getAbslutlyPath() 获取绝对路径,但可能包含 ".." 或 "." 字符,例如 D:\otherPath\..\path\abc.txt
* 3: getCanonicalPath() 获取绝对路径,但不包含 ".." 或 "." 字符,例如 D:\path\abc.txt
*/
public class PathUtil {
private static String webRootPath;
@SuppressWarnings("rawtypes")
public static String getPath(Class clazz) {
String path = clazz.getResource("").getPath();
return new File(path).getAbsolutePath();
}
public static String getPath(Object object) {
String path = object.getClass().getResource("").getPath();
return new File(path).getAbsolutePath();
}
public static String getRootClassPath() {
String path = PathUtil.class.getClassLoader().getResource("").getPath();
return new File(path).getAbsolutePath();
}
public static String getPackagePath(Object object) {
Package p = object.getClass().getPackage();
return p != null ? p.getName().replaceAll("\\.", "/") : "";
}
public static File getFileFromJar(String file) {
throw new RuntimeException("Not finish. Do not use this method.");
}
public static String getWebRootPath() {
if (webRootPath == null)
webRootPath = detectWebRootPath();;
return webRootPath;
}
public static void setWebRootPath(String webRootPath) {
if (webRootPath.endsWith(File.separator))
webRootPath = webRootPath.substring(0, webRootPath.length() - 1);
PathUtil.webRootPath = webRootPath;
}
private static String detectWebRootPath() {
try {
String path = PathUtil.class.getResource("/").getFile();
return new File(path).getParentFile().getParentFile().getCanonicalPath();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}