




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java.util.Properties类(z)Properties 类已不是新东西了,它在 Java 编程的早期就有了,并且几乎没有什么变化。J2SE 的 Tiger 版本增强了这个类,不仅可以用它在单独一行中指定用等号分隔的多个键-值对,还可以用XML 文件装载和保存这些键-值对。在 驯服 Tiger的这一期文章中,John Zukowski 展示了如何驾驭这匹新一代的“役马”。请在本文对应的讨论论坛上与作者及其他读者分享您对本文的想法(您也可以单击文章顶部或底部的 讨论来访问该论坛)。 J2SE 1.5 以前的版本要求直接使用 XML 解析器来装载配置文件并存储设置。虽然这并非是一件困难的事情,并且解析器是平台的标准部分,但是额外的工作总是有点让人烦。最近更新的 java.util.Properties 类现在提供了一种为程序装载和存储设置的更容易的方法: loadFromXML(InputStream is) 和 storeToXML(OutputStream os, String comment) 方法。Properties 基本知识如果不熟悉 java.util.Properties 类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的,如清单 1 所示。清单 1. 一组属性示例foo=barfu=baz将清单 1 装载到 Properties 对象中后,您就可以找到两个键( foo 和 fu )和两个值( foo 的 bar 和 fu 的 baz )了。这个类支持带 u 的嵌入 Unicode 字符串,但是这里重要的是每一项内容都当作 String 。清单 2 显示了如何装载属性文件并列出它当前的一组键和值。只需传递这个文件的 InputStream 给 load() 方法,就会将每一个键-值对添加到 Properties 实例中。然后用 list() 列出所有属性或者用 getProperty() 获取单独的属性。清单 2. 装载属性import java.util.*;import java.io.*;public class LoadSample public static void main(String args) throws Exception Properties prop = new Properties(); FileInputStream fis = new FileInputStream(perties); prop.load(fis); prop.list(System.out); System.out.println(nThe foo property: + prop.getProperty(foo); 运行 LoadSample 程序生成如清单 3 所示的输出。注意 list() 方法的输出中键-值对的顺序与它们在输入文件中的顺序不一样。 Properties 类在一个散列表(hashtable,事实上是一个 Hashtable 子类)中储存一组键-值对,所以不能保证顺序。清单 3. LoadSample 的输出- listing properties -fu=bazfoo=barThe foo property: barXML 属性文件这里没有什么新内容。 Properties 类总是这样工作的。不过,新的地方是从一个 XML 文件中装载一组属性。它的 DTD 如清单 4 所示。清单 4. 属性 DTD如果不想细读 XML DTD,那么可以告诉您它其实就是说在外围 标签中包装的是一个 标签,后面是任意数量的 标签。对每一个 标签,有一个键属性,输入的内容就是它的值。清单 5 显示了 清单 1中的属性文件的 XML 版本是什么样子的。清单 5. XML 版本的属性文件Hibarbaz如果清单 6 所示,读取 XML 版本的 Properties 文件与读取老格式的文件没什么不同。清单 6. 读取 XML Properties 文件import java.util.*;import java.io.*;public class LoadSampleXML public static void main(String args) throws Exception Properties prop = new Properties(); FileInputStream fis = new FileInputStream(sampleprops.xml); prop.loadFromXML(fis); prop.list(System.out); System.out.println(nThe foo property: + prop.getProperty(foo); 关于资源绑定的说明虽然 java.util.Properties 类现在除了支持键-值对,还支持属性文件作为 XML 文件,不幸的是,没有内置的选项可以将 ResourceBundle 作为一个 XML 文件处理。是的, PropertyResourceBundle 不使用 Properties 对象来装载绑定,不过装载方法的使用是硬编码到类中的,而不使用较新的 loadFromXML() 方法。运行清单 6 中的程序产生与原来的程序相同的输出,如 清单 2所示。保存 XML 属性新的 Properties 还有一个功能是将属性存储到 XML 格式的文件中。虽然 store() 方法仍然会创建一个类似 清单 1 所示的文件,但是现在可以用新的 storeToXML() 方法创建如 清单 5 所示的文件。只要传递一个 OutputStream 和一个用于注释的 String 就可以了。清单 7 展示了新的 storeToXML() 方法。清单 7. 将 Properties 存储为 XML 文件import java.util.*;import java.io.*;public class StoreXML public static void main(String args) throws Exception Properties prop = new Properties(); prop.setProperty(one-two, buckle my shoe); prop.setProperty(three-four, shut the door); prop.setProperty(five-six, pick up sticks); prop.setProperty(seven-eight, lay them straight); prop.setProperty(nine-ten, a big, fat hen); FileOutputStream fos = new FileOutputStream(rhyme.xml); prop.storeToXML(fos, Rhyme); fos.close(); 运行清单 7 中的程序产生的输出如清单 8 所示。清单 8. 存储的 XML 文件Rhymelay them straightpick up sticksa big, fat henshut the doorbuckle my shoe结束语使用 XML 文件还是使用老式的 a=b 类型的文件完全取决于您自己。老式文件从内存的角度看肯定是轻量级的。不过,由于 XML 的普遍使用,人们会期望 XML 格式流行起来,因为它已经被广泛使用了,只不过没有用到 Properties 对象。选择完全在您。分析软件包 private XMLUtils 类的源代码以获得关于所使用的 XML 解析的更多信息。PTest.javaimport java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/* 实现properties文件的读取* author bbflyerwww* date 2006-08-02*/public class PTest public static void main(String args) try long start = System.currentTimeMillis(); InputStream is = new FileInputStream(perties); Properties p = new Properties(); p.load(is); is.close(); System.out.println(SIZE : + p.size(); System.out.println(homepage : + p.getProperty(homepage); System.out.println(author : + p.getProperty(author); System.out.println(school : + p.getProperty(school); System.out.println(date : + p.getProperty(date); long end = System.currentTimeMillis(); System.out.println(Cost : + (end - start); catch (IOException ioe) ioe.printStackTrace(); perties# Configuration filehomepage = /bbflyerwwwauthor = bbflyer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年磁介质复制品项目申请报告范文
- 2025年中医药大数据项目规划申请报告
- 硬化工程施工方案
- 传输中断应急预案
- 排水系统优化设计与实施方案
- 测量技术系统合同
- 迪拜投资项目的市场营销方案
- 表征技术系统合同
- 2025年及未来5年中国无线搜索行业市场前景预测及投资战略研究报告
- 办公自动化系统建设合同
- 家乡的变化课件
- 暖通施工工程方案(3篇)
- 消化内科常见疾病诊疗标准与流程
- 人教部编版八年级语文上册教案(全册)
- wellsenn AI眼镜拆解及BOM成本报告:小米AI眼镜-电致变色
- 2025至2030科普教育基地行业发展趋势分析与未来投资战略咨询研究报告
- 2025年上半年事业单位联考《综合应用能力》A类考试测试题(含答案)
- 电梯维保安全培训
- 《发展汉语中级综合1》第1课课件
- DB21T 2732-2017 森林防火技术规程
- 2024年高等教育文学类自考-00504艺术概论考试近5年真题附答案
评论
0/150
提交评论