Module java.base
Package java.util

Class PropertyResourceBundle

java.lang.Object
java.util.ResourceBundle
java.util.PropertyResourceBundle

public class PropertyResourceBundle extends ResourceBundle
PropertyResourceBundleResourceBundle 的一个具体子类,它使用来自属性文件的一组静态字符串来管理某个区域的资源。有关资源包的更多信息,请参阅 ResourceBundle

与其他类型的资源包不同,您不需要对 PropertyResourceBundle 进行子类化。相反,您提供包含资源数据的属性文件。 ResourceBundle.getBundle 将自动查找适当的属性文件并创建一个引用它的 PropertyResourceBundle。请参阅 ResourceBundle.getBundle 以获取有关搜索和实例化策略的完整描述。

以下示例显示了一个资源包系列的成员,基本名称为"MyResources"。文本定义了包" MyResources_de",即该系列的德语成员。此成员基于 PropertyResourceBundle,因此文本是文件"MyResources_de.properties"的内容(相关的示例显示了如何将作为 ListResourceBundle 子类实现的包添加到此系列中)。此示例中的键的形式为"s1"等。实际键完全取决于您的选择,只要它们与您在程序中用于从包中检索对象的键相同即可。键区分大小写。

    # MessageFormat 模式
    s1=Die Platte \"{1}\" enthält {0}.
    # 模式中 {0} 的位置
    s2=1
    # 示例磁盘名称
    s3=Meine Platte
    # 第一个 ChoiceFormat 选择
    s4=keine Dateien
    # 第二个 ChoiceFormat 选择
    s5=eine Datei
    # 第三个 ChoiceFormat 选择
    s6={0,number} Dateien
    # 示例日期
    s7=3. März 1996
API 注意:
PropertyResourceBundle 可以从 InputStreamReader 构造,表示一个属性文件。从 InputStream 构造 PropertyResourceBundle 实例需要输入流以 UTF-8 编码。默认情况下,如果在读取输入流时发生 MalformedInputExceptionUnmappableCharacterException,则 PropertyResourceBundle 实例将重置为异常之前的状态,重新以 ISO-8859-1 读取输入流,并继续读取。如果系统属性 java.util.PropertyResourceBundle.encoding 设置为 "ISO-8859-1" 或 "UTF-8",则输入流仅以该编码读取,并在遇到无效序列时抛出异常。如果指定了 "ISO-8859-1",则不能用 ISO-8859-1 编码表示的字符必须用《Java 语言规范》第 3.3 节中定义的 Unicode 转义来表示,而另一个接受 Reader 的构造函数则没有此限制。对于此系统属性,其他编码值将被忽略。在初始化此类时读取和评估系统属性。更改或删除属性在初始化后不起作用。
实现要求:
如果一个 PropertyResourceBundle 子类同时被多个线程使用,则其实现必须是线程安全的。此类中非抽象方法的默认实现是线程安全的。
自 JDK 版本:
1.1
参见:
  • Constructor Details

    • PropertyResourceBundle

      public PropertyResourceBundle(InputStream stream) throws IOException
      InputStream 创建属性资源包。此构造函数默认以 UTF-8 读取属性文件。如果在读取输入流时发生 MalformedInputExceptionUnmappableCharacterException,则 PropertyResourceBundle 实例将重置为异常之前的状态,重新以 ISO-8859-1 读取输入流并继续读取。如果系统属性 java.util.PropertyResourceBundle.encoding 设置为 "ISO-8859-1" 或 "UTF-8",则输入流仅以该编码读取,并在遇到无效序列时抛出异常。其他编码值对此系统属性无效。在初始化此类时读取和评估系统属性。更改或删除属性在初始化后不起作用。
      参数:
      stream - 表示要从中读取的属性文件的 InputStream。
      抛出:
      IOException - 如果发生 I/O 错误
      NullPointerException - 如果 stream 为 null
      IllegalArgumentException - 如果 stream 包含格式错误的 Unicode 转义序列。
      MalformedInputException - 如果系统属性 java.util.PropertyResourceBundle.encoding 设置为 "UTF-8",并且 stream 包含无效的 UTF-8 字节序列。
      UnmappableCharacterException - 如果系统属性 java.util.PropertyResourceBundle.encoding 设置为 "UTF-8",并且 stream 包含无法映射的 UTF-8 字节序列。
    • PropertyResourceBundle

      public PropertyResourceBundle(Reader reader) throws IOException
      Reader 创建属性资源包。与构造函数 PropertyResourceBundle(InputStream) 不同,对输入属性文件的编码没有限制。
      参数:
      reader - 表示要从中读取的属性文件的 Reader。
      抛出:
      IOException - 如果发生 I/O 错误
      NullPointerException - 如果 reader 为 null
      IllegalArgumentException - 如果从 reader 中出现格式错误的 Unicode 转义序列。
      自 JDK 版本:
      1.6
  • Method Details

    • handleGetObject

      public Object handleGetObject(String key)
      从类中复制的描述: ResourceBundle
      从此资源包获取给定键的对象。如果此资源包不包含给定键的对象,则返回 null。
      指定者:
      handleGetObject 在类 ResourceBundle
      参数:
      key - 所需对象的键
      返回:
      给定键的对象,或 null
    • getKeys

      public Enumeration<String> getKeys()
      返回包含在此 ResourceBundle 及其父包中的键的 Enumeration
      指定者:
      getKeys 在类 ResourceBundle
      返回:
      包含在此 ResourceBundle 及其父包中的键的 Enumeration
      参见:
    • handleKeySet

      protected Set<String> handleKeySet()
      返回仅包含在此 ResourceBundle 中的键的 Set
      覆盖:
      handleKeySet 在类 ResourceBundle
      返回:
      仅包含在此 ResourceBundle 中的键的 Set
      自 JDK 版本:
      1.6
      参见: