从零开始学JDBC--1.9 代码抽取--使用Properties读取配置文件

来源:互联网 发布:中华红包软件 编辑:程序博客网 时间:2024/05/22 00:23

http://blog.csdn.net/u014726937/article/details/52916611
为了更灵活的对项目进行配置,我们采用db.properties文件将配置信息存储起来,然后用Properties类去读取,代码如下:

    Properties props = new Properties();    FileInputStream in = new FileInputStream("./src/db.properties");    props.load(in);    url = props.getProperty("url");    user = props.getProperty("user");    password = props.getProperty("password");    driverClass = props.getProperty("driverClass");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10


但是这样又带来了新的问题:

  当项目部署在javaSE上时自然没什么问题,但是如果要部署在javaWeb项目上时,一定会出现如下错误:

java.io.FileNotFoundException: .\src\db.properties (系统找不到指定的路径。)
  • 1
  • 1

为什么呢? 
原因是: 
A: 在javaSE项目中,“.”代表Java命令的运行目录从项目的根目录开始 
B: 在Web项目中,“.”代表java命令的运行目录从tomcat/bin目录开始

临时解决:可以将db.properties文件添加到tomcat/bin/src目录下(需手动创建src文件夹) 
缺点:只能读,不能修改,一旦修改,整个web项目将自动重新加载,影响客户使用

之前在web项目中可以使用ServletContext对象的getRealpath()方法来加载该文件,但是在javaSE项目中是无法获取ServletContext的,很矛盾

最终,有个更通用的方法来解决这个问题: 
使用类路径的读取方法 
这样,即使写的是同样的路径,也不会影响到配置文件的加载

具体做法: 
注意:配置文件db.properties都是放在src目录下的 

类路径的获取方法: 
$当前类名.class.getResourceAsStream(“/db.properties”)

“/” 代表classpath的根目录 
在java项目下,classpath的根目录从 bin目录开始 
在Web项目下,classpath的根目录从 WEB-INF/classes/目录开始

props = new Properties();InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");props.load(in);
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3


这种方式是迄今为止,最通用的加载方式,确保不论是在java项目中还是web项目中都不会出问题!因为这种方法找到的是始终是以classpath为参照的

如果仅仅是在Web项目中,获取加载文件还有一种方法,配置文件需要放在src目录下:

prop = new Properties();prop.load(new FileReader(BasicFactory.class.getClassLoader().getResource("config.properties").getPath()));
  • 1
  • 2
0 0