属性类
Properties 对象是一个 Map, 其键和值按照约定为字符串。尽管可以使用 Map 的方法来访问数据,但通常使用更多类型安全的方法 getProperty , setProperty 和 stringPropertyNames 。
属性经常存储在 Java 属性文件中,这些文件是简单的文本文件。它们的格式在 Properties.load 方法中有详细记录 。综上所述:
- 每个键/值对是一行文本,在键和值之间有空格,等于(
=
)或冒号(:
)。等号或冒号可以在其之前和之后具有任何数量的空格,这将被忽略。 - 始终忽略前导空格,始终包含尾随空格。
- 反斜杠可用于转义任何字符(小写
u
除外)。 - 该行末尾的反斜杠表示下一行是当前行的延续。但是,与所有行一样,将忽略连续行中的前导空格。
- 就像在 Java 源代码中一样,
\u
后跟四个十六进制数字代表 UTF-16 字符。
大多数框架,包括 Java SE 自己的工具,如 java.util.ResourceBundle,将属性文件加载为 InputStreams。从 InputStream 加载属性文件时,该文件可能只包含 ISO 8859-1 字符(即 0-255 范围内的字符)。任何其他字符必须表示为\u
escapes。但是,你可以使用任何编码编写文本文件,并使用 native2ascii 工具(随每个 JDK 一起提供)来为你进行转义。
如果要使用自己的代码加载属性文件,则可以使用任何编码,只要你基于相应的 Charset 创建 Reader(例如 InputStreamReader )即可。然后,你可以使用 load(Reader)
而不是传统加载(InputStream)方法加载文件。
你还可以将属性存储在一个简单的 XML 文件中,该文件允许文件本身定义编码。这样的文件可以使用 loadFromXML 方法加载。描述此类 XML 文件结构的 DTD 位于 http://java.sun.com/dtd/properties.dtd 。