首页 > Java教程 > 正文

今天更改一个项目的部分功能,需要读取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();  
} 

以上内容来自于网络,如有侵权联系即删除。

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息