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

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

ID:32585409

大小:63.91 KB

页数:8页

时间:2019-02-13

java程序中的配置文件的存放和读取_第1页
java程序中的配置文件的存放和读取_第2页
java程序中的配置文件的存放和读取_第3页
java程序中的配置文件的存放和读取_第4页
java程序中的配置文件的存放和读取_第5页
资源描述:

《java程序中的配置文件的存放和读取》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

2、tabaseI

3、-ConnectionPool(数据库连接池类)IIDao(数据库访问对象类)I

4、DaoFactory(Dao的工厂类)I

5、database.properties(数据库配置属性文件)I

6、-RecordSet(记录集类)在这种存储方案中,所有的与数据库相关的类和配置文件都在同一个包目录中;在开发过程中,配置文件和源文件也按采用这种方式进行组织,这样会使得程序的数据库访问维护变得相当清晰明了。大部分开发工具在编译打包这样的源文件组织时,会自动将相关配置文件和类文件放到生成的目标文件夹中或JAR文件中。一般情况下,我们在发布自己的Java

7、程序时,都是以JAR或WAR形式将程序打包发布,而对应的配置文件也会按照上述的目录格式被放到了JAR或WAR文件中,这样,就实现了配置文件和程序文件打包在一起发布的目的。现在的问题是,我们如何读取位于程序安装文件中的配置文件的信息?比如,在上面的图中,ConnectionPool是一个数据库连接池类,它需要在系统启动时自动读取存储在database.properties中的数据库连接和配置信息,以便设置相关的数据库连接。这样,我们就需要在程序中测定目前程序安装或部署的位置,以便读取对应的属性文件。在很多其他语言编写的程序中,我们可以利用一些系统提供的

8、API或一些全局对象获取目前应用程序运行所在的目录。比如VB,我们可以使用Application对象测定当前程序的安装位置,在Java程序中如何完成类似的任务呢?Java程序并没有类似于VB那种全局对象,但如果我们观察位于上述目录结构中的database.properties文件,应该发现其处于应用程序的CLASSPATH中,这样,我们就可以使用Java中的类装载器中的相关的方法,读出这些配置文件的信息,该类名为ClassLoader0比如,在上例中,我们可以先得到ConnectinPool的类装载器,然后测定ConnectionPool类所在的包路

9、径,然后利用ConnectionPool所在的包目录读岀database.properties文件的信息,对应的伪代码如下:ClassLoaderloader=ConnectionPool.class.getClassLoader();得到ConnectionPool所在的包名;将包名转换为对应的目录名,存入一个名为path的字符串变量中;调用loader的getResourceAsStream(path+"database.properties"),得到输入流下而是一个可实际运行的样例代码片段,它可自动测定传入的类所在的包目录,返回传入的属性文件所

10、代表的输入流。它还有一个附加的功能:如果属性文件直接放到了当前类所在的根目录(比如位于JAR文件的根目录或WAR文件的WEB-INF/classesM录中)、系统的用户目录系统、系统其他的类路径中时,它也可以找到;当然,如果还是找不到,它将返回null。具体的代码如下:publicclassPropHelper{/**^guessPropFile:*@paramcis:和要寻找的属性文件处于相同的包中的任意的类*@parampropFile:要寻找的属性文件名publicstaticjava.io.InputStreamguessPropFile(C

11、lasscis,StringpropFile){try{〃得到类的类装载器ClassLoaderloader=cls.getClassLoader();〃先从当前类所处路径的根目录中寻找属性文件java.io.InputStreamin=loader.getResourceAsStream(propFile);if(in!=null)returnin;〃没有找到,就从该类所处的包Fl录屮查找属性文件Packagepack=cls.getPackage();if(pack!=null){〜StringpackName=pack.getName();St

12、ringpath二””;if(packName.indexOf(,'.H)<0)path=packName+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。