学习目标:

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

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

一、认识properties文件

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

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

注    释:前面加上#号

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

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

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

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

例如,下面一个properties文件:

二、解读java.util.Properties类

在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件)。Properties类是Hashtable的子类。也就是说它具备Map集合的特点。Properties的构造函数有两个,一个不带参数,一个使用一个Properties对象作为参数。

1、Properties类的层次结构

java.lang.Object

java.util.Dictionary<K,V>

java.util.Hashtable<Object,Object>

java.util.Properties

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

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

2、properties文件与Properties类的关系

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

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

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

三、实践

1、以绝对方式加载properties文件信息。

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

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

测试的properties文件:

测试类:

  1 /** 2 * Properties类测试 3 * User: 支胜勇 4 */ 5 public class Test4 { 6     7         public static void main(String args[]) throws IOException { 8             9             System.out.println("------------测试Properties-------------");10             11             Properties prop=new Properties();12             prop.put("姓名", "支胜勇");13             prop.put("爱好", "编程和旅游");14             prop.put("籍贯", "贵州毕节");15             16             createProperFile("E:\\tt.properties",prop);17             18             readProperFile("E:\\tt.properties");19             20             Map<String,String> map=new HashMap<String,String>();21             map.put("性别", "男");22             map.put("学历", "本科");23             modifyProperFile("E:\\tt.properties",map);24         } 25 26         27         /***28          * 创建properties文件,并向其写入键值对,包括properties和xml格式29          * @param fileName30          * @param keyValues31          */32         public static void createProperFile(String fileName,Properties prop){33              System.out.println("------------创建Properties文件----------");34             //创建properties文件35              36             File properFile=new File(fileName.substring(0,fileName.lastIndexOf("."))+".properties");37             if(!properFile.exists()){38                 try {39                     properFile.createNewFile();40                 } catch (IOException e) {41                     // TODO Auto-generated catch block42                     System.err.print("创建文件失败!");43                     return;44                 }45             }46             47             try {48                 49                 FileWriter fw=new FileWriter(properFile);50                 prop.store(fw, "我是通过properties写进来的");51                 OutputStream fw1=new FileOutputStream(fileName.substring(0,fileName.lastIndexOf("."))+".xml");52                 prop.storeToXML(fw1, "我是通过properties写进来的");53                 fw1.close();54                 fw.close();55                 56                 System.out.println("------------创建Properties文件成功----------");57             } catch (IOException e) {58                 // TODO Auto-generated catch block59                 System.err.print("向properties文件写入数据失败!");60                 return;61             }62         }63         64         65         /***66          * 读取properties文件67          * @param properFileName68          * @return69          * @throws IOException70          */71         public static Properties readProperFile(String properFileName) throws IOException{72             73             File file =new File(properFileName);74              Properties prop=null;75             if(!file.exists()){76                 77                 System.out.print("文件不存在!");78                 return null;79             }80             81             try {82                 System.out.println("------读取properties文件-------");83                 FileReader fr=new FileReader(file);84                  //创建一个Properties容器 85                 prop = new Properties(); 86                 //从流中加载properties文件信息 87                 prop.load(fr); 88                 //循环输出配置信息 89                 for (Object key : prop.keySet()) { 90                         System.out.println(key + "=" + prop.get(key)); 91                 }92                 93                 94             } catch (FileNotFoundException e) {95                 // TODO Auto-generated catch block96                 System.out.print("文件不存在!");97             }98             99             return prop;
100         }
101
102
103
104         /***
105          * 修改properties文件,并持久化保存
106          * @param properFileName
107          * @param map
108          * @throws IOException
109          */
110         Public static void modifyProperFile(String properFileName,Map<String,String> map) throws IOException{
111
112             Properties prop=new Properties();
113
114             if(properFileName.endsWith(".xml")||properFileName.endsWith(".XML")){
115
116                 prop.loadFromXML(new FileInputStream(properFileName));
117                 for(String key:map.keySet()){
118                     prop.put(key, map.get(key));
119                 }
120                 OutputStream os=new FileOutputStream(properFileName);
121                 prop.storeToXML(os, "我已经被修了");
122                 os.close();
123             }else{
124                 prop.load(new FileReader(properFileName));
125                 for(String key:map.keySet()){
126                     prop.put(key, map.get(key));
127                 }
128                 FileWriter fw=new FileWriter(properFileName);
129                 prop.store(fw, "我已经被修改了");
130                 fw.close();
131             }
132         }
133 }

运行结果图:

转载于:https://www.cnblogs.com/zhishengyong/p/3788467.html

Java中Properties类的学习总结相关推荐

  1. java中properties作用,java中Properties类的使用

    java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...

  2. Java中Properties类的操作

    Java中Properties类的操作 ============================================= com.gordon.constant Constant.java: ...

  3. Java中Properties类的使用

    在项目的开发中,我们经常写一些.properties文件 用来配置一些相关的内容,比如端口号 IP地址 服务器数据库的地址等等 PS 当然这些东西也是能够写在XML 文件内的. 下面摘抄2处 对于这些 ...

  4. java中properties类_Java中的Properties类详解

    1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常 ...

  5. java中JOptionPane类_Java学习之JOptionPane类

    在图形用户界面(GUI)环境中,大体上有两种类型的窗体: 框架窗体(frame window)和对话窗体(dialog window). 在Java中,我们使用JFrame对象作为框架窗体,使用JDi ...

  6. Java中String类的学习

    String类 public class StringTest3 {public static void main(String[] args) {String a = "hello nih ...

  7. java properties 参数_Java中Properties 类的详细使用

    我把你的头像,设置成我的名字,此刻你便与我同在. 我把你的名字,写进我的代码里面,以后,我的世界便存在着你. 一.Properties 类 Properties 类位于 java.util.Prope ...

  8. 12月29日--Java中有关类与对象的学习记录

    1.12月29日第一课记录 Java中有关类与对象的学习记录 一.基本概念部分 1.类:具有相同.相似的属性.特征.行为方式以及功能的一类事物的总称 (举例:一类用户,如淘宝用户) 类是对象的模板 是 ...

  9. java集合——java.util.Properties类

    [0]README 0.1)以下全文转自 : http://trans.blog.51cto.com/503170/110227/ [1]认识properties文件 1. properties文件是 ...

最新文章

  1. CUDA学习(十五)
  2. linux 反弹shell(二)反弹shell的本质
  3. micronet 测试2
  4. python基础知识资料-学习Python列表的基础知识汇总
  5. Redis事务中几种常见的场景-exec执行前后的语法错误时的处理
  6. runtime相关知识
  7. Ubuntu查看系统任务管理器(cpu+内存资源占用)+查看虚拟机分配核心数
  8. 用Python告诉你,为什么宇宙的尽头是公务员!
  9. 圆网印花色浆未干引起的印花疵病
  10. 利用@factory和@dataProvider实现参数化
  11. 产品读书《浪潮之巅》
  12. firebase_crashlytics缺失dSYM unity ios
  13. psd缩略图上传组件
  14. Halcon区域region系列(1)相关的算子
  15. 电脑证书错误即上网站打不开提示证书错误
  16. 江苏专转本计算机第七章,2013江苏专转本 第七章 无穷级数.ppt
  17. Q2净利润同比下降1%,甲骨文转型之路错搭“老爷车”?
  18. 支付宝小程序审核与发布
  19. Python制作PPT
  20. 2021.09.27-10.3 AI行业周刊(第65期):坚持的力量

热门文章

  1. Java使用独立数据库连接池(DBCP为例)
  2. thinkphp 相关
  3. 开始 Scrum 3: Values of Scrum
  4. ArcGIS的BLOB字段与Access数据库BLOB字段的交换
  5. java aqs实现原理_JAVA基础学习之-AQS的实现原理分析
  6. 电芯容量在前期循环中容量增加_锂离子电池容量“跳水”背后元凶找到了!——非均匀压力...
  7. ide中tomcat乱码_idea tomcat 乱码问题的解决及相关设置
  8. python获取html文本框内容_Python3处理HTML获取所需内容
  9. (51)FPGA面试题-Verilog中function与task之间的区别是什么?
  10. 基于FPGA实现Aurora高速串行接口