文档

Java™教程
隐藏目录
属性
教程:基本Java类
课程:平台环境
章节:配置工具

属性

属性是以键/值对的形式管理的配置值。在每个键/值对中,键和值都是String值。键用于标识和检索值,就像变量名用于检索变量的值一样。例如,一个能够下载文件的应用程序可能会使用一个名为“download.lastDirectory”的属性来跟踪上次下载使用的目录。

要管理属性,请创建java.util.Properties的实例。该类提供以下方法:

有关流的介绍,请参阅I/O Streams部分和基本I/O课程。

Properties扩展了java.util.Hashtable。从Hashtable继承的一些方法支持以下操作:


安全注意事项: 访问属性需要当前安全管理器的批准。本节中的示例代码段假定为独立应用程序,默认情况下,独立应用程序没有安全管理器。同样的代码在小程序中可能无法正常工作,这取决于所在浏览器。有关小程序上的安全限制,请参阅小程序的功能和限制部分的Java小程序课程。

System类维护一个Properties对象,该对象定义了当前工作环境的配置。有关这些属性的更多信息,请参阅系统属性。本节的其余部分将解释如何使用属性来管理应用程序配置。

应用程序生命周期中的属性

下图演示了一个典型应用程序在其执行过程中如何使用Properties对象管理其配置数据。

Properties对象的可能生命周期

设置Properties对象

下面的Java代码执行了前面部分描述的前两个步骤:加载默认属性和加载已记住的属性:

. . .
// 创建并加载默认属性
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();

// 创建具有默认值的应用程序属性
Properties applicationProps = new Properties(defaultProps);

// 现在从上次调用中加载属性
in = new FileInputStream("appProperties");
applicationProps.load(in);
in.close();
. . .

首先,应用程序设置了一个默认的Properties对象。该对象包含了在其他地方没有明确设置值时要使用的属性集。然后,load方法从名为defaultProperties的磁盘文件中读取默认值。

接下来,应用程序使用另一个构造函数创建了第二个Properties对象applicationProps,其默认值包含在defaultProps中。当检索属性时,默认值起作用。如果在applicationProps中找不到属性,则会搜索其默认列表。

最后,代码从名为appProperties的文件中加载一组属性到applicationProps中。该文件中的属性是上次调用应用程序时保存的,下一节将对此进行解释。

保存属性

以下示例使用Properties.store从前面示例中写出应用程序属性。默认属性不需要每次都保存,因为它们永远不会更改。

FileOutputStream out = new FileOutputStream("appProperties");
applicationProps.store(out, "---没有注释---");
out.close();

store方法需要一个用于写入的流,以及一个字符串作为输出顶部的注释。

获取属性信息

一旦应用程序设置了它的Properties对象,应用程序可以查询该对象以获取有关它包含的各个键和值的信息。应用程序在启动后从Properties对象中获取信息,以便根据用户的选择进行初始化。Properties类有几种获取属性信息的方法:

设置属性

用户在应用程序执行过程中与应用程序的交互可能会影响属性设置。这些更改应该反映在Properties对象中,以便在应用程序退出时保存(并调用store方法)。以下方法更改Properties对象中的属性:


注意: 上述方法中的一些是在Hashtable中定义的,因此可以接受除String以外的键和值的参数类型。即使方法允许其他类型,也应始终使用String作为键和值。也不要在Properties对象上调用Hashtable.setHastable.setAll方法;始终使用Properties.setProperty方法。

上一页:配置工具
下一页:命令行参数