快速业务通道

Java程序中的配置文件的存放和读取 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Java程序中的配置文件的存放和读取

时间:2011-09-09

大家可能经常会遇到在Java程序中存取程序配置文件的需求,比如,为了能够 和不同的数据库连接,我们经常把数据库连接的信息存放到属性文件中,这些信 息一般包括数据库驱动程序类名、数据库连接的URL,数据库的用户名和口令等等 。为了便于程序的安装或部署,我们经常会把这些的配置文件存放到程序安装的 根目录中。由于Java程序用包来分组类,有时候将这些配置文件放入到读取它们 的类所在的包目录中会更好一些。比如,在下面的图示中,将数据库配置文件 database.properties放到数据库读取类所在的包目录就是一种比较清晰的存储方 案:

/-----------其它包目录

|

|

-------edu.ec.database

|

|---------------ConnectionPool(数据库连接池类)

|

|---------------Dao(数据库访问对象类)

|

|---------------DaoFactory(Dao的工厂类)

|

|---------------database.properties(数据库配置属性文件)

|

|---------------RecordSet(记录集类)

在这种存储方案中,所有的与数据库相关的类和配置文件都在同一个包目录中 ;在开发过程中,配置文件和源文件也按采用这种方式进行组织,这样会使得程 序的数据库访问维护变得相当清晰明了。

大部分开发工具在编译打包这样的源文件组织时,会自动将相关配置文件和类 文件放到生成的目标文件夹中或JAR文件中。一般情况下,我们在发布自己的 Java程序时,都是以JAR或WAR形式将程序打包发布,而对应的配置文件也会按照 上述的目录格式被放到了JAR或WAR文件中,这样,就实现了配置文件和程序文件 打包在一起发布的目的。

现在的问题是,我们如何读取位于程序安装文件中的配置文件的信息?比如, 在上面的图中, ConnectionPool是一个数据库连接池类,它需要在系统启动时自 动读取存储在database.properties中的数据库连接和配置信息,以便设置相关的 数据库连接。这样,我们 就需要在程序中测定目前程序安装或部署的位置,以便 读取对应的属性文件。

Java程序中的配置文件的存放和读取(2)

时间:2011-09-09

在很多其他语言编写的程序中,我们可以利用一些系统提供的API或一些全局 对象获取目前应用程序运行所在的目录。比如VB,我们可以使用Application对象 测定当前程序的安装位置,在Java程序中如何完成类似的任务呢?

Java程序并没有类似于VB那种全局对象,但如果我们观察位于上述目录结构中 的database.properties文件,应该发现其处于应用程序的CLASSPATH中,这样, 我们就可以使用Java中的类装载器中的相关的方法,读出这些配置文件的信息, 该类名为ClassLoader。比如,在上例中,我们可以先得到ConnectinPool的类装 载器,然后测定ConnectionPool类所在的包路径,然后利用 ConnectionPool所在 的包目录读出database.properties文件的信息,对应的伪代码如下:

ClassLoader loader=ConnectionPool.class.getClassLoader();

得到ConnectionPool所在的包名;

将包名转换为对应的目录名,存入一个名为path的字符串变量中;

调用loader的getResourceAsStream(path+"database.properties"),得到输 入流

下面是一个可实际运行的样例代码片段,它可自动测定传入的类所在的包目录 ,返回传入的属性文件所代表的输入流。它还有一个附加的功能:如果属性文件 直接放到了当前类所在的根目录(比如位于JAR文件的根目录或WAR文件的WEB- INF/classes目录中)、系统的用户目录系统、系统其他的类路径中时,它也可以 找到;当然,如果还是找不到,它将返回null。具体的代码如下:

public class PropHelper{ /** *guessPropFile: *@param cls:和要寻找的属性文件处于相同的包中的任意的类 *@param propF

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号