A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© muma 中级黑马   /  2014-4-15 23:38  /  1057 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. java.util.Properties类 学习笔记



  2. 学习目标:



  3. 1、认识properties文件,理解其含义,会正确创建properties文件。

  4. 2、会使用java.util.Properties类来操作properties文件。

  5. 3、掌握相对路径,能正确书写一个properties文件的相对路径。



  6. 一、认识properties文件



  7. 1、properties文件是一个文本文件

  8. 2、properties文件的语法有两种,一种是注释,一种属性配置。

  9. 注    释:前面加上#号

  10. 属性配置:以“键=值”的方式书写一个属性的配置信息。

  11. 3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。

  12. 4、properties的属性配置键值前后的空格在解析时候会被忽略。

  13. 5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。





  14. 例如,下面一个properties文件:


  15. #正确的properties配置文件
  16. aaa=1\
  17.     11
  18. b
  19. bb    =     222




  20. #格式良好的properties文件
  21. aaa=111
  22. bbb=222



  23. 二、解读java.util.Properties类



  24. 1、Properties类的层次结构

  25. java.lang.Object

  26.   java.util.Dictionary<K,V>

  27.       java.util.Hashtable<Object,Object>

  28.           java.util.Properties



  29. 从层次机构看,Properties类实现了Map接口,因为HashTable实现了Map接口,因此Properties类本质上是一种简单的Map容器。

  30. 实际上,Properties类本身表示了对一种Map结构的操作。properties文件本身就表示了一个“键值对”的集合。因此,Properties类属于集合容器的家族,在使用前应该创建一个Properties的容器,实际上就是创建一个默认不带参数的Properties对象。以后通过别的方式给里面添加“键值对”。



  31. 2、properties文件与Properties类的关系

  32. 通过properties文件可以填充Properties类。

  33. 也可以通过xml文件来填充Properties类。

  34. 可以通过绝对路径方式加载Properties文件信息,也可以使用相对路径加载。



  35. 三、实践



  36. 1、以绝对相对路径方式加载properties文件信息。

  37. 2、将Properties对象持久化到一个properties文件或者一个xml文件中。

  38. 3、修改并持久化properties文件。



  39. 测试代码:



  40. 测试的properties文件:


  41. #格式良好的properties文件
  42. aaa=111
  43. bbb=222



  44. 测试类:


  45. package stu;

  46. import java.io.*;
  47. import java.util.Properties;

  48. /**
  49. * Properties类测试
  50. * User: xiaohui
  51. * Date: 2008-11-4 21:04:54
  52. */
  53. public class TestProperties {
  54.         public static void main(String args[]) throws IOException {
  55.                 testProperties();
  56.                 test1();
  57.         }

  58.         public static void testProperties() throws IOException {
  59.                 System.out.println("------------testProperties-------------");
  60.                 //将properties文件加载到输入字节流中
  61.                 InputStream is = new FileInputStream("D:\\myprojects\\lession4\\src\\stu\\ttt.properties");
  62.                 //创建一个Properties容器
  63.                 Properties prop = new Properties();
  64.                 //从流中加载properties文件信息
  65.                 prop.load(is);
  66.                 //循环输出配置信息
  67.                 for (Object key : prop.keySet()) {
  68.                         System.out.println(key + "=" + prop.get(key));
  69.                 }

  70.                 //定义一个输出流
  71.                 OutputStream os1 = new FileOutputStream("C:\\ttt.xml");
  72.                 OutputStream os2 = new FileOutputStream("C:\\ttt.properties");

  73.                 //从Properties对象导出导出到xml
  74.                 prop.storeToXML(os1, "我从properties导出的XML配置文件");
  75.                 //从Properties对象导出properties文件
  76.                 prop.store(os2, "我从properties导出的XML配置文件");

  77.                 is.close();
  78.                 os1.close();
  79.                 os2.close();

  80.                 //从xml加载配置信息,填充Properties容器
  81.                 prop.loadFromXML(new FileInputStream("C:\\ttt.xml"));
  82.                 //循环输出配置信息
  83.                 System.out.println("我从导出的xml加载配置文件信息!");
  84.                 for (Object key : prop.keySet()) {
  85.                         System.out.println(key + "=" + prop.get(key));
  86.                 }

  87.                 //修改Properties对象,并持久化到一个文件
  88.                 prop.put("呵呵呵", "嘎嘎嘎");
  89.                 OutputStream os3 = new FileOutputStream("C:\\ttt1.xml");
  90.                 prop.storeToXML(os3, "我从properties导出的XML配置文件");
  91.                 os3.close();
  92.         }

  93.         /**
  94.          * 以相对路径方式加载properties文件
  95.          *
  96.          * @throws IOException
  97.          */
  98.         public static void test1() throws IOException {
  99.                 System.out.println("------------test1-------------");
  100.                 Properties p = new Properties();
  101.                 p.load(TestProperties.class.getResourceAsStream("/stu/ttt.properties"));
  102.                 for (Object key : p.keySet()) {
  103.                         System.out.println(key + "=" + p.get(key));
  104.                 }
  105.         }
  106. }





  107. 运行结果:


  108. ------------testProperties-------------
  109. bbb=222
  110. aaa=111
  111. 我从导出的xml加载配置文件信息!
  112. bbb=222
  113. aaa=111
  114. ------------test1-------------
  115. bbb=222
  116. aaa=111

  117. Process finished with exit code 0


复制代码

评分

参与人数 1黑马币 +1 收起 理由
菜小徐 + 1

查看全部评分

3 个回复

倒序浏览
谢谢!!
回复 使用道具 举报

这个地方我也是很迷茫,查看JDK也没有看的太懂,突然在网上看到了
回复 使用道具 举报

这个地方我也是很迷茫,查看JDK也没有看的太懂,突然在网上看到了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马