当前位置:首页 > Android > 正文内容

java.util.Properties类

jsc11年前 (2014-09-15)Android3142
一、认识properties文件
 
1、properties文件是一个文本文件
2、properties文件的语法有两种,一种是注释,一种属性配置。
 注    释:前面加上#号
 属性配置:以“键=值”的方式书写一个属性的配置信息。
3、properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。
4、properties的属性配置键值前后的空格在解析时候会被忽略。
5、properties文件可以只有键而没有值。也可以仅有键和等号而没有值,但无论如何一个属性配置不能没有键。
 
 
例如,下面一个properties文件:
#正确的properties配置文件 
aaa=1\ 
    11 
b 
bb    =     222
 
#格式良好的properties文件 
aaa=111 
bbb=222
二、解读java.util.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文件:
#格式良好的properties文件 
aaa=111 
bbb=222

测试类:

package stu; 

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

/** 
* Properties类测试 
* User: xiaohui 
* Date: 2008-11-4 21:04:54 
*/ 
public class TestProperties { 
        public static void main(String args[]) throws IOException { 
                testProperties(); 
                test1(); 
        } 

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

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

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

                is.close(); 
                os1.close(); 
                os2.close(); 

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

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

        /** 
         * 以相对路径方式加载properties文件 
         * 
         * @throws IOException 
         */ 
        public static void test1() throws IOException { 
                System.out.println("------------test1-------------"); 
                Properties p = new Properties(); 
                p.load(TestProperties.class.getResourceAsStream("/stu/ttt.properties")); 
                for (Object key : p.keySet()) { 
                        System.out.println(key + "=" + p.get(key)); 
                } 
        } 
}

运行结果:

------------testProperties------------- 
bbb=222 
aaa=111 
我从导出的xml加载配置文件信息! 
bbb=222 
aaa=111 
------------test1------------- 
bbb=222 
aaa=111 

Process finished with exit code 0

C:盘下写入的文件如下:

1.png

2.png3.png4.png

呵呵,全部达到预期目标。
 

本文出自 “Java初学者” 博客。

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/23.html

标签: Properties
分享给朋友:

“java.util.Properties类” 的相关文章

Android基本功:支持GPS的核心API

一、LocationManager类        作用和TelephonyManager,AudioManager等服务类的作用类似,所有GPS定位相关的服务、对象都由该对象产生;    ...

android异步任务详解 AsynTask

android异步任务详解 AsynTask

android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者都可以实现同样的功能。本文后面将对AsynTask和Thread...

实现应用程序只有在第一次启动时显示引导界面

第一次安装启动:启动页--->导航页-->主页面之后启动:启动页-->主页面实现的原理就是:在启动页面用做一个文件保存的状态,保存程序是不是第一次启动的状态。因为只是要保存一个状态,我们将这个程序是第一次打开就将他设为true,当他进入 主页面之后将他的状态未为false,因为都...

Android应用加入微信分享

Android应用加入微信分享

一、申请你的AppIDhttp://open.weixin.qq.com/  友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID二、官网下载libammsdk.jar包http://open.weixin.qq.com/download/?lang=zh_...

Android 更换皮肤思路及解决方案

Android 更换皮肤思路及解决方案

本篇博客要给大家分享的一个关于Android应用换肤的Demo,大家可以到我的github去下载demo,以后博文涉及到的代码均会上传到github中统一管理。 github地址:https://github.com/devilWwj/Android-skin-upda...

Fragment保持状态切换

Fragment保持状态切换

在使用Activity管理多个Fragment时,每次切换Fragment使用的是replace,结果导致出现xxx is not currently in the FragmentManager异常挂掉网上说使用replace切换会使被切换的Fragment给替换掉,从而被被切换的Fra...