java.util.Properties的使用

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

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

因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 putputAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。

相反,应该使用 setProperty 方法。如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 storesave 方法,则该调用将失败。类似地,如果在“不安全”的

Properties 对象(即包含非 String 的键)上调用 propertyNameslist 方法,则该调用将失败。 

以下是Properties加载的文件,以键值对的形式存储。

a=java.util.Date
b=javax.swing.JFrame
public class PropertiesSample {
    public static void main(String[] args) throws IOException {
        Properties pro = new Properties();
        FileInputStream fis = new FileInputStream("obj.txt");
        //从输入流中读取属性列表(键和元素对)。
        pro.load(fis);
        //将属性列表输出到指定的输出流。此方法对调试很有用。
        pro.list(System.out);
        System.out.println(pro.getProperty("a"));
    }
}
结果:

-- listing properties --
b=javax.swing.JFrame
a=java.util.Date
java.util.Date

Properties还可以读取xml文件,但是对于xml文件的格式有要求:

<?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>

其实就是<properties>中包含了一个<comment>标签,以及任意数据量的<entry>标签,每一个<entry>标签有一个键属性,输入的内容就是属性值。例如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>java</comment>
	<entry key="title">Thinking in java</entry>
	<entry key="price">49.9</entry>
</properties>
public class XmlSample {
    public static void main(String[] args) throws IOException {
        Properties pro = new Properties();
        FileInputStream fis = new FileInputStream("books.xml");
        pro.loadFromXML(fis);
        pro.list(System.out);
    }
}
结果为:

-- listing properties --
price=49.9
title=Thinking in java

Properties类一样可以创建xml数据。使用的是storeToXML()方法。

public class StoreXmlTest {
    public static void main(String[] args) throws IOException {
        Properties prop = new Properties();
        prop.setProperty("title","Think in java");
        prop.setProperty("price","49.9");
        FileOutputStream fos = new FileOutputStream("test.xml");
        prop.storeToXML(fos,"hello");
        fos.close();
    }
}
结果:(这是xml文件中的内容)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>hello</comment>
<entry key="price">49.9</entry>
<entry key="title">Think in java</entry>
</properties>







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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值