Bootstrap

[Java]Properties类加载配置文件

    在我JDBC的文章末尾展示了完整的JDBC使用流程。但那种方式有一个问题,如果项目需要更换数据库,或者这个项目本来就是要使用多种数据库,那么像这种把信息写死在代码里边的编写模式,是肯定不行的。实际开发中肯定不会使用这种把信息写死在代码里面的方法,像数据库的URL、连接路径这些配置信息,会单独用一个文件存储起来,这种编写模式其实就是"解耦"的思想体系。在代码量少、重复不多的时候,这边编写的优势不明显,但一旦项目大了之后,或者说要拓展功能,这种拆解分藕的模式就十分有益了。

    Java的Util包相信并不陌生,这是java提供的工具类,Propertiers作为获取配置文件信息的类,也被分到了这一个包下。

.properties配置文件 

    配置文件其实是修改了文件格式后缀的txt文本文件。内容分为:头部信息和配置信息:

    配置文件不要乱写,即便一行的数据很长也要将它们放在一行里面。这个后面在load方法处会提

Properties类简介

Properties类结构

    Properties类继承了Hashtable,读取配置文件后以键值对的形式将数据存放到本类对象中。这里加载一下我上面展示的MySQL配置文件

Properties类常用方法

    Properties类常用的方法主要有:

1.load(Reader r)  /  load(InputStream i):

读取  xxx.properties配置文件的信息

Reader:按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)

InputStream :从输入流中读取属性列表(键和元素对)

    为什么配置文件里数据要一行一行写,因为load方法是一行一行地读取数据的

 

    LineReader是Properties的内部类 

2.getProperty(String key)  /  getProperty(String key,String defaultValue):

String:传入一个String的key,并找到对应的value。假如使用前面的信息,调用getPropertry("username")会得到String的对象: "root"。如果没有这个键值对,会返回null

String key,String def:在前者基础上判断。如果key没有找到对应的value,那么会返回def

3.setProperty(String key,String value)

    添加配置信息到properties对象里(也就是内存),不会直接影响到硬盘中的配置文件,尔后可以选择将内存中的配置信息同步到存储中的配置文件里。

注意:Properties类因为继承了Hashtable类,所有有有着Hashtable中的put()等方法,且这些继承自父类的方法允许编程人员调用,将不是String类的数据加入到Properties类对象中。而出于数据安全,Properties类对象如果添加了不是String类型的数据,在被调用时会报错,阻止编程人员使用。

4.store(...)

store(OutputStream out, String comments)
store(Writer writer, String comments):

按load用的配置文件的格式将配置信息书写到对应的文件中。其中,
out和writer是对应的文件路径,要一直书写文件名到。格式为:

.../jdbc.properties

comments是文件说明,可以理解为备注,会写在配置文件的头部信息里面。

storeToXML(OutputStream os, String comment)
写出一个包含此表中所有属性的XML文档。
storeToXML(OutputStream os, String comment, String encoding)
用指定的编码格式 (也就是encoding) 写XML文档。

;