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"));
}
}
分享到:
相关推荐
6. **阅读相关文档**:压缩包中的`Java类中获得相对路径和绝对路径.txt`和`Java普通类中如何获取工程真实路径?.txt`文档可能包含了更具体的实现细节,建议仔细阅读以获取更多信息。 理解这些知识点后,开发者就能...
在本压缩包中,提供了一个无需额外配置的MyBatis逆向工程工具类,使得这个过程变得更加便捷。 首先,我们来看一下核心文件`generatorConfig.xml`。这个文件是MyBatis Generator的配置文件,它定义了如何从数据库中...
描述中的“java解压文件工具类、放入工程直接可用、案例、web开发、unziputil”进一步明确了这个工具类的特点和应用场景。它表明该工具类是用Java语言编写的,可以直接集成到任何Java工程中,无需额外配置,具有良好...
标题中的“matlab开发-gui包路径工具”指的是一个MATLAB程序,它设计了一个图形界面来帮助用户更方便地处理包(package)的路径设置。包是MATLAB中组织代码的一种方式,可以将相关的函数和类组合在一起,便于管理和...
获取当前类的绝对路径与获取工程路径类似,只不过这里的路径是以当前类所在的包路径开始的。通过调用当前类的getResource方法,传递一个空字符串作为参数,可以直接获取到当前类的绝对路径。同样,需要将得到的路径...
"微信小程序源码-小工具类.rar" 是一个包含微信小程序应用源代码的压缩文件,特别是针对“小工具”类别的应用。通过这个压缩包,开发者可以学习和理解小程序的开发过程,也可以直接用于自己的项目中,或者作为模板...
总的来说,理解和掌握Java中资源文件的读取方法以及如何使用自定义工具类处理这些文件,对于提升代码的可维护性和可扩展性具有重要意义。通过`KeyValueUtils.java`和`KeyValue.java`,我们可以有效地管理和操作键值...
- `.cpp` 和 `.h`:源代码和头文件,其中可能包含了工程名作为类、函数或变量的前缀。 - `.dsp` 和 `.dsw`:这是VC6.0的工程文件,存储了项目配置和依赖关系,必须更新以反映新的工程名。 - `.rc`:资源文件,可能...
- `java.lang.Runtime`:Java提供的内置类,可以获取当前运行时的实例,通过`getRuntime()`方法可以获得,然后调用其`freeMemory()`和`totalMemory()`方法获取JVM的空闲内存和总内存。 - `java.lang....
- **下载工具**:首先需要获取Mybatis逆向工程的工具包,例如本例中的"mybatis自动生成代码工具"。 - **配置文件修改**:解压下载的工具包,找到配置文件(通常是`generatorConfig.xml`),这里需要修改数据库连接...
4. **获取项目路径**:在窗口的初始化方法(如`OnEnable`)中,我们使用`Application.dataPath`获取项目数据路径,然后通过`Path.GetDirectoryName`获取完整的项目路径。 ```csharp void OnEnable() { string ...
例如,PowerShell可以使用`Get-ChildItem`获取所有.csproj文件,然后用`[xml]`类解析和修改它们。 3. **利用VS扩展**:有一些VS扩展,如`SlowCheetah`或自定义的MSBuild任务,可以帮助批量修改项目属性,包括引用...
GIS 软件工程实习报告最短路径分析是基于 ArcGIS Engine 开发工具的实习报告,该报告旨在通过 C# 语言在 VS 2021 开发环境中完成查询几何网络的最短路径分析的功能。整个实习报告可以分为三个部分:实验环境、实验...
- 编写主类,调用Generator类并传入配置文件路径,执行生成代码的操作。 - 运行主类,生成的代码会出现在指定的输出目录下。 - 将生成的代码导入项目,进行适当的修改以满足业务需求。 7. **优势与价值**:通过...
路径处理工具类 def __init__(self): # 判断调试模式 debug_vars = dict((a, b) for a, b in os.environ.items() if a.find('IPYTHONENABLE') >= 0) # 根据不同场景获取根目录 if len(debug_vars) >
#### 二、文件路径工具类 [FilePathUtil] 文件路径操作是进行文件处理的基础,FilePathUtil提供了一系列实用的方法来简化这些操作。 ##### 1. 根据某个文件名字,查找该文件在本工程下的物理位置: `String ...
在使用SQLite3数据库时,有时会遇到一个...在提供的"解决Sqlite3中文路径问题"压缩包中,可能包含了示例代码或工具,用于演示如何实现这一功能。学习并理解这些代码,将有助于深入理解如何在实际项目中解决类似问题。
在运行时,只需指定工程路径,工具便会自动执行清理任务。 总结,"VC工程清理工具"是VC开发者的一款实用辅助工具,通过它可以有效地管理和优化工程文件,提高开发效率。而提供的源代码则为用户提供了更大的灵活性,...
在VS2015 MFC工程中,你需要创建一个对话框或文档视图类,其中包含一个列表控件(如`CListCtrl`)来显示文件信息。然后,你可以在初始化对话框或视图时启动文件遍历过程,将结果添加到列表控件中。 以下是一个基本...
9. **集成到项目**:将生成的代码整合到你的MyBatis项目中,通常需要在项目的配置文件中添加新生成的XML映射文件路径,并确保实体类和DAO接口与已有的业务逻辑相匹配。 通过以上知识点,你可以更好地理解和使用...