DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

读取配置文件的方法


读取配置文件需要指定配置文件的路径和文件名,可以在Java代码里硬编码配置文件名,然后将配置文件所在目录加入classpath;也可以把路径和文件名都硬编码在Java代码里,只要启动脚本和配置文件的相对位置不变,就不必修改代码。第一种方法更灵活(指定配置文件路径的工作放在了启动脚本里,而不是Java代码中),推荐使用。

硬编码配置文件名

用Class的getResourceAsStream(String name)方法加载配置文件,代码如下:

InputStream in = this.getClass().getResourceAsStream("/db.properties");

Properties p = new Properties();

p.load(in); System.out.println("value is: " + p.getProperty("db"));

其中GetResources是运行这段代码所在类的类名,部署目录结构是:

root

|-bin

|-start.bat

|-conf

|-db.properties

|-lib

|-res.jar

启动脚本start.bat内容是:

java -cp f:\VMFiles\tmpFiles\goduEx2\lib\res.jar;f:\VMFiles\tmpFiles\goduEx2\conf getResources.GetResources

其中res.jar的结构是:getResources/GetResources.class(假设代码所在文件的包名是getResources)。

这里最重要的是getResourceAsStream方法的参数前面要加上"/"。

在static方法里无法使用"this"关键字,可以硬编码类名,在Eclipse中重构可以同时修改类名:

InputStream in = GetResources.class.getResourceAsStream("/db.properties");

指定配置文件相对路径

将上面代码的第一句改为:

InputStream in = new FileInputStream("../conf/db.prop");

相应地start.bat也不需要把conf加到classpath里:

java -cp f:\VMFiles\tmpFiles\goduEx2\lib\res.jar getResources.GetResources

不推荐ResourceBundle.getBundle()方法,因为这个方法不是用来加载文件的。



Published

Sep 19, 2012

Last Updated

Sep 19, 2012

Category

Tech

Tags

  • Java 106
  • properties 1

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor