当前位置: 首页 > Java教程 > 正文

普通Java类读取WEB-INF目录下的jdbc.properties属性文件

收藏文章Loading
收藏
(60)

今天更改一个项目的部分功能,需要读取WEB-INF目录下的jdbc.properties文件,但是当运行时候却出现IO读取异常,说系统找不到路径,但是查看文件目录结构是正确的。那么,只能是路径问题,网上查询资料获得了解决办法,大体思路是获得当前类的绝对路径然后截取字符串得到WEB-INF路径然后拼接,具体实例代码如下:

try{  
    //获得当前类的绝对路径
    //replaceAll("%20", "")这个替换是因为据说getPath()读取时会把空格读取为“%20”
    String url = this.getClass().getResource("/").getPath()
                                                 .replaceAll("%20", ""); 
    //截取字符串得到WEB-INF路径然后拼接
    String path = url.substring(0, url.indexOf("WEB-INF")) + 
                  "WEB-INF/config/jdbc.properties";  
    
    Properties properties = new Properties();  
    properties.load(new FileInputStream(path));  
    //获得属性文件中的jdbc.username
    String dbUser = properties.getProperty("jdbc.username");
}catch(Exception e){  
    e.printStackTrace();  
} 

经测试以上这段代码的确可以正确的读取到jdbc.properties属性文件,但是会经过大量的字符串拼接操作,代码不太直观。相对来说,Csyor还是比较喜欢下面这种方法,但是我这网上看到有的网友说不提倡使用,这里就仁者见仁智者见智吧。

try{  
    //直接获得WEB-INF/config/jdbc.properties的绝对路径
    String path = getServletContext()
                           .getRealPath("WEB-INF/config/jdbc.properties");
		
    Properties properties = new Properties();
    properties.load(new FileInputStream(new File(path))); 
    
    //获得属性文件中的jdbc.username
    String dbUser = properties.getProperty("jdbc.username");
}catch(Exception e){  
    e.printStackTrace();  
} 

本文固定链接: http://www.csyor.com/756.html - 穿梭于偶然

该日志由 Csyor 于2014年05月13日发表在 Java教程 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 普通Java类读取WEB-INF目录下的jdbc.properties属性文件 - 穿梭于偶然
关键字: , , ,

普通Java类读取WEB-INF目录下的jdbc.properties属性文件:目前有1 条留言

发表评论


快捷键:Ctrl+Enter