项目中配置文件路径
2012-12-12 22:40
411 查看
1 场景
2 预备知识
3 解决办法
4 windws和linux下路径
1 场景
在项目中大多会涉及到相对路径和绝对路径,以项目中的配置文件为例,如何找到配置文件的路径?下面介绍几种方法说明。
2 预备知识
(1)System.getProperty("user.dir") 得到的是java虚拟机调用目录即当前用户目录。
如果在eclipse使用该方法,因为Eclipse中启动jvm都是在项目根路径上启动的,如项目所在路径是E:\ProcessFileProcessFile,那么上述方法得到的路径是E:\ProcessFileProcessFile。
如果在tomcat中运行web应用,那么输出的将是tomcat下的bin目录,如E:\tomcat-5.0.28\bin
如果你的可运行jar包的目录是E:\,你启动java包,那么System.getProperty("user.dir")所指的目录是E:\
(2)JAVA IO操作中相对路径都是基于(1)中的这个路径的。
3 方法
(1)方法一
以最终java工程打成jar包为例。因为运行java包System.getProperty("user.dir")得到的目录是jar所在的目录,所以配置文件一般放在与jar包同级目录。
在eclipse中java工程如下(配置文件夹config和源码src处于同一级目录)
在代码中使用相对路径找到配置文件,可以看出相对路径是相对于当前用户目录的
打成jar包以后,jar包需要和上述config文件夹放在同级目录下,程序才能找到,如下图
运行jar包得到配置文件中的信息
缺点:System.getProperty("user.dir")获取的路径在not-web aplication 和 web application中时不一样的,不够灵活。
(2)方法2
因为System.getProperty("user.dir")或相对路径在tomcat中运行输出的是tomcat下的bin目录,如E:\tomcat-5.0.28\bin,而我们的wb工程一般是放在webapps下的,如E:\tomcat-5.0.28\webapps,那么配置文件具体位置可以根据System.getProperty("user.dir")的路径找到。但是有一种更简便的方法,不需要你发布工程后另外拷贝配置文件,只需在eclipse开发中放好,然后直接发布到tomcat即可。
getResource("/").getPath()方法直接得到classes所在路径的url(在not-web aplication 和 web application中都能得到程序的class所在根目录),如\E:\tomcat-5.0.28\webapps\项目名称\WEB-INF\classes\
如
String resourcePath=HandleFile.class.getResource("/").getPath();
注意:getResource方法使用了utf-8对路径信息进行了编码,当路径中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的中文及空格路径。
classPath = java.net.URLDecoder.decode(classPath, "utf-8");
然后处理该路径即得到classes所在路径,因为我们在项目中src下面的东东是直接编译到classes文件夹下面的,所以配置文件放在src下就会自动编译到classes文件夹下,故发布到tomcat上时无需重新配置。例如下面
推荐使用方法2
4 windows和linux下路径
直接看代码
/** *将路径转换成windows和linux下通用的路径格式 *windows下路径是E:\sample *linux下路径是/sample * @param strPath 要转换的路径 * @return */ public static String commonPath(String strPath) { String resultPath=null; //windows 下 if("\\".equals(File.separator)) { resultPath=strPath.replace("/", "\\"); } //linux 下 if("/".equals(File.separator)) { resultPath=strPath.replace("\\", "/"); } return resultPath; }
5 完整代码
/**
* 获取项目类所在根路径,如D:\java\apache-tomcat-7.0.28\webapps\RegistServiceSystem\WEB-INF\classes\
* @return
*/
public static String getClassesPath() {
String classPath = ConfigReader.class.getResource("/").getPath().substring(1);
try {
// getResource方法使用了utf-8对路径信息进行了编码,当路径中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要的真实路径,
// 在此,调用了URLDecoder的decode方法进行解码,以便得到原始的中文及空格路径。
classPath = java.net.URLDecoder.decode(classPath, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// windows 下
if ("\\".equals(FS))
classPath = classPath.replace("/", "\\");
// linux 下
if ("/".equals(FS))
classPath = classPath.replace("\\", "/");
return classPath;
}
相关文章推荐
- java配置文件读取和项目路径的多种获取方式
- java web上传文件至非项目路径并配置tomcat虚拟路径进行下载
- Tomcat配置文件---配置访问指定路径下的项目
- maven 构建项目时 java路径下配置属性文件相关
- 如何从在JAVA项目中获得配置文件的路径
- tomcat部署项目,指定设置项目的配置文件路径
- 通过环境变量设置WEB项目数据源(Spring)及其项目配置文件路径,动态更新数据源及项目配置
- Tomcat 配置上传文件到项目外的路径
- Java Web 项目中的配置文件路径
- 项目配置文件(xml、properties)路径与classpath的关系
- 关于web项目web.xml配置文件路径的问题。
- Java Web 项目中的配置文件路径
- web项目 log4j2 指定配置文件路径
- maven项目配置文件路径的修改
- 通过配置tomcat的service文件来自定义项目浏览路径
- java中获取当前项目类路径下的配置文件
- java项目配置文件路径获取
- M6573 项目配置文件路径
- 在项目中根据配置文件路径生成File对象的方法
- maven多级项目使用 slf4j+log4j,以及自定义配置文件路径