黑马程序员技术交流社区

标题: (主推)补充集合框架3:Map总结(java.util.Properties) [打印本页]

作者: 朱晓杰    时间: 2013-5-13 21:07
标题: (主推)补充集合框架3:Map总结(java.util.Properties)
本帖最后由 朱晓杰 于 2013-5-13 21:12 编辑

1.java.util.Properties概述

    public class Properties extends Hashtable<Object,Object>

    Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。

    java中的Properties文件是一种配置文件,主要用于表达配置信息,文件类型为'.properties',格式为文本文件,文件的内容格式为

"键=值"的格式,在properties文件中,用"#"来做注释,properties文件在项目中用在很多地方,操作比较方便。

dbconfig.properties
  1. #----------------------------#
  2. #     数据库参数配置文件     #
  3. #----------------------------#
  4. DBDRIVER=oracle.jdbc.driver.OracleDriver
  5. DBURL=jdbc:oracle:thin:@127.0.0.1:1521:orcl
  6. DBUSER=SCOOT
  7. DBPWD=TIGER
  8. DBTYPE=ORACLE
复制代码
2.java.util.Properties方法概要

  1. import static java.lang.System.out;

  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.PrintWriter;
  9. import java.util.Iterator;
  10. import java.util.Properties;
  11. import java.util.Set;

  12. public class PropertiesDemo {
  13.         public static void main(String[] args){
  14.                
  15.                 Properties properties = new Properties();
  16.                
  17.                 /* void setProperty(String key,String value)
  18.                  *
  19.                  * 调用HashTable的put方法来设置键值对
  20.                  **/
  21.                 properties.setProperty("DBTYPE", "ORACLE");
  22.                 properties.setProperty("DBDRIVER", "oracle.jdbc.driver.OracleDriver");
  23.                 properties.setProperty("DBURL", "jdbc:oracle:thin:@10.15.60.44:1521:orcl");
  24.                 properties.setProperty("DBUSER", "SCOOT");
  25.                 properties.setProperty("DBPWD", "TIGER");
  26.                
  27.                 /*
  28.                  * String getProperty(String key)  用指定的键在此属性列表中搜索属性,也就是通过key获得key多对应的value
  29.                  * String getProperty(String key, String defaultValue)  用指定的键在此属性列表中搜索属性,若key不存在,返回 defaultValue,否则返回指定键的属性
  30.                  */
  31.                 out.println(properties.getProperty("DBTYPE"));
  32.                 out.println(properties.getProperty("DBTYPE","ORACLE"));
  33.                
  34.                 /*
  35.                  * Set<E> stringPropertyNames()
  36.                  *
  37.                  * 返回此属性列表中的键集,其中该键集的对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
  38.                  **/
  39.                 Set<String> set = properties.stringPropertyNames();
  40.                 Iterator<String> it = set.iterator();
  41.                 while(it.hasNext()){
  42.                         String key = it.next();
  43.                         String value = properties.getProperty(key);
  44.                         out.println(key + "=" + value);
  45.                 }
  46.                
  47.                 /*
  48.                  * void list(PrintStream out)
  49.                  * void list(PrintWriter out)
  50.                  *
  51.                  * 将属性列表输出到指定的输出流,
  52.                  **/
  53.                 File file = new File("C:\\dbconfig.properties");
  54.                 if(!file.exists()){
  55.                         try {
  56.                                 file.createNewFile();
  57.                         } catch (IOException e) {
  58.                                 e.printStackTrace();
  59.                         }
  60.                 }
  61.                 try {
  62.                         PrintWriter pw = new PrintWriter(file);
  63.                         properties.list(pw);
  64.                         pw.flush();
  65.                         pw.close();
  66.                 } catch (FileNotFoundException e) {
  67.                         e.printStackTrace();
  68.                 }
  69.                
  70.                 /*
  71.                  void load(InputStream inStream)
  72.          从输入流中读取属性列表(键和元素对)
  73.                 */
  74.                 Properties p = new Properties();
  75.                 try {
  76.                         InputStream in = new BufferedInputStream(new FileInputStream("C:\\dbconfig.properties"));
  77.                         p.load(in);
  78.                         Set<String> sset = p.stringPropertyNames();
  79.                         Iterator<String> iit = sset.iterator();
  80.                         while(iit.hasNext()){
  81.                                 String key = iit.next();
  82.                                 String value = p.getProperty(key);
  83.                                 out.println(key + "=" + value);
  84.                         }
  85.                 } catch (Exception e) {
  86.                         e.printStackTrace();
  87.                 }
  88.         }
  89. }
复制代码
3.项目实战

  在平时做项目的过程中,经常遇到properties配置文件,比如说配置数据库参数,FTP服务器参数信息,...

  A.资源文件所存放的位置
    properties文件需要放到classpath下面,就是java类或者库的存放路径

  B.获取系统资源文件的方式有两种
    (1) InputStream inputstream = ClassLoader.getSystemResourceAsStream("dbconfig.properties ");//文件不以"/" 开头
    (2) InputStream inputstream = this.getClass().getResourceAsStream("/dbconfig.properties ");//文件必须"/"开头   

  C.提取加载资源文件的信息

  D.操作资源文件,获取配置的属性
    (1) 根据key值在资源文件中查询value值   
    (2) 获取所有的键值对的信息
iheima.rar (6.57 KB, 下载次数: 21)




作者: 朱晓杰    时间: 2013-5-13 21:10
尹桥印 发表于 2013-5-13 21:09
楼主我又来看帖子了。我在看视频。先收藏了先

:handshake谢谢了!每次都来捧场!加油!
作者: 曹睿翔    时间: 2013-5-13 21:22
果真不错,可惜我JDBC没学,不过还是容易看懂的
作者: 朱晓杰    时间: 2013-5-13 21:36
曹睿翔 发表于 2013-5-13 21:22
果真不错,可惜我JDBC没学,不过还是容易看懂的

:handshake   版主谦虚了,按照版主的实力,小菜~~~
作者: 曹睿翔    时间: 2013-5-13 21:47
朱晓杰 发表于 2013-5-13 21:36
版主谦虚了,按照版主的实力,小菜~~~

实事求是罢了,真没学,不过你总结的很不错,还有静态导入,properties文件的配置名很容易让人看懂,去黑马前我会把JDBC先学学的
作者: 朱晓杰    时间: 2013-5-13 21:52
曹睿翔 发表于 2013-5-13 21:47
实事求是罢了,真没学,不过你总结的很不错,还有静态导入,properties文件的配置名很容易让人看懂,去黑 ...

恩恩,版主加油,顶你!我也有好多东西没学了,抓紧时间!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2