Properties

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

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

有关流的介绍,请参考Basic I/O类中的I/O Streams部分。

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

Security Considerations:

对属性的访问需要当前安全 管理 器的批准。假定本节中的示例代码段位于独立的应用程序中,默认情况下,这些应用程序没有安全 管理 器。Servlets 中的相同代码可能无法运行,具体取决于运行它的浏览器。有关小应用程序安全性限制的信息,请参见Java Applets类中的Servlets 可以做什么和不能做什么

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

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

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

设置属性对象

以下 Java 代码执行上一部分中描述的前两个步骤:加载默认属性和加载记住的属性:

. . .
// create and load default properties
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();

// create application properties with default
Properties applicationProps = new Properties(defaultProps);

// now load properties 
// from last invocation
in = new FileInputStream("appProperties");
applicationProps.load(in);
in.close();
. . .

首先,应用程序设置默认的Properties对象。如果未在其他位置显式设置值,则此对象包含要使用的属性集。然后,load 方法从磁盘上名为defaultProperties的文件中读取默认值。

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

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

Saving Properties

下面的示例使用Properties.store重写上一示例的应用程序属性。默认属性无需每次都保存,因为它们永远不会更改。

FileOutputStream out = new FileOutputStream("appProperties");
applicationProps.store(out, "---No Comment---");
out.close();

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

获取 Property 信息

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

Setting Properties

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

Note:

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

首页