Java获取项目根目录

分享一个项目中使用的获取项目根目录的方法。原方法因为只运行在Linux环境下,所有对于Java应用使用时有点问题,我进行一点优化。优化后适用Web项目和Java应用项目。

路径是采用class类加载器的方式获取的,方法里区分了当前运行环境是LinuxWindow,两者在截取时有一点区别。

import java.io.File;
import java.net.URLDecoder;

public class ProjectPath {

	private static String rootPath = "";

	private ProjectPath() {
		init();
	}

	@SuppressWarnings("deprecation")
	private static void init() {
		String path = ProjectPath.class.getResource("ProjectPath.class")
				.toString();
		path = URLDecoder.decode(path);
		path.replaceAll("\\\\", "/");
		int index = path.indexOf("WEB-INF");
		if (index == -1) {
			index = path.indexOf("bin");
		}
		if (index == -1) {
			index = path.indexOf("lib");
		}
		if (index == -1) {
			int index2 = path.indexOf("jar!");
			if (index2 != -1) {
				path = path.substring(0, index2);
				System.out.println(path);
				System.out.println(File.separator);
				index = path.lastIndexOf("/");
				System.out.println(index);
			}
		}
		path = path.substring(0, index);
		if (path.startsWith("jar")) {
			path = path.substring(9);
		}
		if (path.startsWith("file")) {
			path = path.substring(5);
		}
		if (path.endsWith("/") || path.endsWith("\\")) {
			path = path.substring(0, path.length() - 1);
		}
		// linux环境下第一个/是需要的
		String os = System.getProperty("os.name").toLowerCase();
		if (os.startsWith("win")) {
			path = path.substring(1);
		}
		rootPath = path;
	}

	/**
	 * 获取应用的根目录,路径分隔符为/,路径结尾无/
	 * 
	 * @return
	 */
	public static String getProjectPath() {
		if ("".equals(rootPath)) {
			init();
		}
		return rootPath;
	}

}

使用方式就是ProjectPath.getProjectPath()即可。

比如,Linux上,获取的路径格式为/home/weblogic/xxWindow上,获取的路径格式为C:/tmp/xx

你可能感兴趣的:(Java)