java.util.Properties 的一些简单使用

 Properties extends Hashtable 。

也就是说,Properties 类也是以“键值对”(key - value) 形式存储。一般都写成 xxx.properties 文件,但是该类还有 loadFromXML 和 storeToXML 的两个方法,那么也就是说 这种形式可以存储成 XML 文件,那么 XML 文件里的格式有该怎么写呢?API 里的说明是:

loadFromXML(InputStream)storeToXML(OutputStream, String, String) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:

 <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
 
注意,导入或导出属性时 访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个唯一标识 DTD 的字符串:
    <?xml version="1.0" encoding="UTF-8"?>

    <!-- DTD for properties -->

    <!ELEMENT properties ( comment?, entry* ) >

    <!ATTLIST properties version CDATA #FIXED "1.0">

    <!ELEMENT comment (#PCDATA) >

    <!ELEMENT entry (#PCDATA) >

    <!ATTLIST entry key CDATA #REQUIRED>

但这样子的格式很不容易看明白到底是什么。下面做个测试看看这个格式是什么样子的。

 

1、创建一个文件,名为 a.porperties文件内容的格式如下

name=aaa
password=bbb

        读取该文件信息代码,如下

	Properties pps = new Properties();
	try {
		pps.load(new FileInputStream("a.properties"));
		Enumeration names = pps.propertyNames();
		while (names.hasMoreElements()) {
			String strKey = (String) names.nextElement();
			String strValue = pps.getProperty(strKey);
	
			System.out.println(strKey + "=" + strValue);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

        将该properties文件转为XML文件代码,如下

	pps.storeToXML(new FileOutputStream("bbb.xml"), "agreal", "GB2312");

        生成的XML文件如下

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>agreal</comment>
<entry key="password">bbb</entry>
<entry key="name">aaa</entry>
</properties>

        再试试读取该文件内容,代码如下

	Properties pps = new Properties();
	try {
		pps.loadFromXML(new FileInputStream("bbb.xml"));
		Enumeration names = pps.propertyNames();
		while (names.hasMoreElements()) {
			String strKey = (String) names.nextElement();
			String strValue = pps.getProperty(strKey);

			System.out.println(strKey + "=" + strValue);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

 

事情就是这样发生的。

 

从生成的 XML 文件来看,便可知道 API 给的格式是个怎样的了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值