`

获取工程路径的工具类

阅读更多
 

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.Charset;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

 
public class ConfigLocation
{
	// web工程根路径
	private static final String WEB_ROOT;

	// web工程下的WEB-INF路径
	private static final String WEB_INF_PATH;

	// web工程下的etc/config/路径
	private static final String CONFIG_PATH;
	
	//取当前操作系统版本名
	private static final String SYSTEM_NAME = System.getProperty("os.name");
	
	private static final String LINUX ="Linux";

	private static Log logger = LogFactory.getLog(ConfigLocation.class);
	static
	{
		WEB_INF_PATH = chopLastSection(getClassPath());
		WEB_ROOT = chopLastSection(WEB_INF_PATH);
		CONFIG_PATH = WEB_ROOT.concat("etc/config/"
				.replace("/", File.separator));
	}

	/**
	 * 获取web工程根路径,该路径以文件分隔符结束
	 * 
	 * @return web工程根路径
	 */
	public static String getWebRoot()
	{
		return WEB_ROOT;
	}

	/**
	 * 获取web工程下的WEB-INF路径,该路径以文件分隔符结束
	 * 
	 * @return web工程下的WEB-INF路径
	 */
	public static String getWebInfPath()
	{
		return WEB_INF_PATH;
	}

	/**
	 * 获取web工程下etc/config/的路径,该路径为项目配置文件路径
	 * 
	 * @return web工程下etc/config/的路径
	 */
	public static String getConfigPath()
	{
		return CONFIG_PATH;
	}

	private static String chopLastSeparator(String src)
	{
		if (src.endsWith(File.separator))
		{
			src = src.substring(0, src.lastIndexOf(File.separator));
		}
		return src;
	}

	private static String chopLastSection(String src)
	{
		String temp = chopLastSeparator(src);
		return temp.substring(0, temp.lastIndexOf(File.separator) + 1);
	}

	/**
	 * 获取classpath
	 * 
	 * @return classpath
	 */
	public static String getClassPath()
	{
		String url = Thread.currentThread().getContextClassLoader()
				.getResource("").toString().replace("/", File.separator);
		try
		{
			url = URLDecoder.decode(url, Charset.defaultCharset().toString());
			String prefix = "file:".concat(File.separator);
			if (url.startsWith(prefix))
			{
				url = url.substring(prefix.length());
				if(SYSTEM_NAME.startsWith(LINUX)){
					if(url.indexOf(":") > -1){
						url = url.substring(File.separator.length());
					}
				}
			}
			if(SYSTEM_NAME.startsWith(LINUX)){
				url="/"+url;
			}
		}
		catch (UnsupportedEncodingException e)
		{
			logger.error("The system should always have the platform default");
		}
		return url;
	}

	public static void main(String[] args)
	{
		/*System.out.println(ConfigLocation.getClassPath());
		System.out.println(ConfigLocation.getWebInfPath());
		System.out.println(ConfigLocation.getWebRoot());
		System.out.println(ConfigLocation.getConfigPath());*/
		
		System.out.println(System.getProperty("os.name"));
	}
}


分享到:
评论

相关推荐

    普通java类获取绝对路径

    6. **阅读相关文档**:压缩包中的`Java类中获得相对路径和绝对路径.txt`和`Java普通类中如何获取工程真实路径?.txt`文档可能包含了更具体的实现细节,建议仔细阅读以获取更多信息。 理解这些知识点后,开发者就能...

    mybatis逆向工程工具类,无需配置

    在本压缩包中,提供了一个无需额外配置的MyBatis逆向工程工具类,使得这个过程变得更加便捷。 首先,我们来看一下核心文件`generatorConfig.xml`。这个文件是MyBatis Generator的配置文件,它定义了如何从数据库中...

    解压缩工具类

    描述中的“java解压文件工具类、放入工程直接可用、案例、web开发、unziputil”进一步明确了这个工具类的特点和应用场景。它表明该工具类是用Java语言编写的,可以直接集成到任何Java工程中,无需额外配置,具有良好...

    matlab开发-gui包路径工具

    标题中的“matlab开发-gui包路径工具”指的是一个MATLAB程序,它设计了一个图形界面来帮助用户更方便地处理包(package)的路径设置。包是MATLAB中组织代码的一种方式,可以将相关的函数和类组合在一起,便于管理和...

    java获取各种路径的基本方法

    获取当前类的绝对路径与获取工程路径类似,只不过这里的路径是以当前类所在的包路径开始的。通过调用当前类的getResource方法,传递一个空字符串作为参数,可以直接获取到当前类的绝对路径。同样,需要将得到的路径...

    微信小程序源码-小工具类.rar

    "微信小程序源码-小工具类.rar" 是一个包含微信小程序应用源代码的压缩文件,特别是针对“小工具”类别的应用。通过这个压缩包,开发者可以学习和理解小程序的开发过程,也可以直接用于自己的项目中,或者作为模板...

    读取资源文件工具类

    总的来说,理解和掌握Java中资源文件的读取方法以及如何使用自定义工具类处理这些文件,对于提升代码的可维护性和可扩展性具有重要意义。通过`KeyValueUtils.java`和`KeyValue.java`,我们可以有效地管理和操作键值...

    VC修改工程名工具.rar

    - `.cpp` 和 `.h`:源代码和头文件,其中可能包含了工程名作为类、函数或变量的前缀。 - `.dsp` 和 `.dsw`:这是VC6.0的工程文件,存储了项目配置和依赖关系,必须更新以反映新的工程名。 - `.rc`:资源文件,可能...

    java版获取本地系统信息的源码工程

    - `java.lang.Runtime`:Java提供的内置类,可以获取当前运行时的实例,通过`getRuntime()`方法可以获得,然后调用其`freeMemory()`和`totalMemory()`方法获取JVM的空闲内存和总内存。 - `java.lang....

    Mybatis逆向工程

    - **下载工具**:首先需要获取Mybatis逆向工程的工具包,例如本例中的"mybatis自动生成代码工具"。 - **配置文件修改**:解压下载的工具包,找到配置文件(通常是`generatorConfig.xml`),这里需要修改数据库连接...

    VS批量设置项目引用路径

    例如,PowerShell可以使用`Get-ChildItem`获取所有.csproj文件,然后用`[xml]`类解析和修改它们。 3. **利用VS扩展**:有一些VS扩展,如`SlowCheetah`或自定义的MSBuild任务,可以帮助批量修改项目属性,包括引用...

    GIS软件工程实习报告最短路径分析.doc

    GIS 软件工程实习报告最短路径分析是基于 ArcGIS Engine 开发工具的实习报告,该报告旨在通过 C# 语言在 VS 2021 开发环境中完成查询几何网络的最短路径分析的功能。整个实习报告可以分为三个部分:实验环境、实验...

    ssm逆向工程生成工具

    - 编写主类,调用Generator类并传入配置文件路径,执行生成代码的操作。 - 运行主类,生成的代码会出现在指定的输出目录下。 - 将生成的代码导入项目,进行适当的修改以满足业务需求。 7. **优势与价值**:通过...

    Python 获取项目根路径的代码

    路径处理工具类 def __init__(self): # 判断调试模式 debug_vars = dict((a, b) for a, b in os.environ.items() if a.find('IPYTHONENABLE') >= 0) # 根据不同场景获取根目录 if len(debug_vars) >

    Java常用工具类(免费)

    #### 二、文件路径工具类 [FilePathUtil] 文件路径操作是进行文件处理的基础,FilePathUtil提供了一系列实用的方法来简化这些操作。 ##### 1. 根据某个文件名字,查找该文件在本工程下的物理位置: `String ...

    vc 工程 清理 工具 附加了源代码 用户 可以自行修改

    在运行时,只需指定工程路径,工具便会自动执行清理任务。 总结,"VC工程清理工具"是VC开发者的一款实用辅助工具,通过它可以有效地管理和优化工程文件,提高开发效率。而提供的源代码则为用户提供了更大的灵活性,...

    (VS2015 C++)获取电脑文件夹下文件的名称,类型,大小,后缀信息

    在VS2015 MFC工程中,你需要创建一个对话框或文档视图类,其中包含一个列表控件(如`CListCtrl`)来显示文件信息。然后,你可以在初始化对话框或视图时启动文件遍历过程,将结果添加到列表控件中。 以下是一个基本...

    mybatis-oracle逆向工程工具

    9. **集成到项目**:将生成的代码整合到你的MyBatis项目中,通常需要在项目的配置文件中添加新生成的XML映射文件路径,并确保实体类和DAO接口与已有的业务逻辑相匹配。 通过以上知识点,你可以更好地理解和使用...

    WEB工程页面提取工具

    在IT行业中,Web工程页面提取工具是一种非常实用的软件开发辅助工具,主要用于从大型Web项目中提取特定的页面或资源。这种工具可以帮助开发者快速定位并获取所需的文件,提高工作效率,尤其是在进行版本更新、代码...

    android工具

    开发者可以在命令行中使用`keytool`工具,指定APK或keystore文件路径,来获取对应的SHA1证书指纹。这对于发布应用、配置Google Maps API或其他Google服务是必要的步骤。 4. **压缩包子文件的文件名称列表**:...

Global site tag (gtag.js) - Google Analytics