今天更改一个项目的部分功能,需要读取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(); }
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注