Java中使用资源包储存和访问在应用程序中要使用到的本地特定资源对象。
一个本地特定资源的最简单例子就是字符串对象。举例来说,在下面的应用程序中,要求输出不同的消息,而这些消息取决于在命令行中的本地指定。我们用静态的方法来创建一个资源包的实例:
java.util.ResourceBundle.getBundle():
ResourceBundle messages = ResourceBundle.getBundle("messages", Locale.ENGLISH);
其中getBundle()方法有三种方式来让你选择一个特定的locale和classloader,或者你可选择默认项来选择默认的locale和classloarder。
正如你在前面看到的那段代码,得到一个资源包的实例并没有什么实际价值。因为例子代码locale使用英语表示的,所以在执行上面这个方法的时候,ResourceBundle 就会从应用程序的classpath中寻找名为“messages_en.properties”的文件。如果没有找到此文件,那么就会出现java.util.MissingResourceException<wbr>这样一个错误提示。</wbr>
在实际的应用程序中,你可以根据用户设定或是系统设定来选择你的locale。下面是一个根据启动时的设定来选择locale的例子:
Locale locale = Locale.ENGLISH;
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> if ( args.length != 0 ) {<br>
<wbr> <wbr> <wbr> <wbr> locale = new Locale(args[0]);<br>
}<br>
ResourceBundle messages = ResourceBundle.getBundle("messages", locale);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
在有了资源包的实例后,就可以调用一种get方式来获得你想要的本地资源。
ResourceBundle类型定义了获得字符串、字符串数组和获得对象的方法。在这个例子中,一个字符串形式的“welcome.message”将被触发:
String message = messages.getString("welcome.message");
当调用getString()函数的时候,ResourceBundle就从先前得到的工具文件中寻找有关键字名“welcome.message”的字符串对象。如果没有找到关键字,那么就会出现java.util.MissingResourceException<wbr>错误提示。</wbr>
其中用到的道具文件就如下面这种形式:
messages_en.properties:
welcome.message=Welcome to fantastic application and thanks for choosing
Acme, Inc.
messages_de.properties
welcome.message=Heißen Sie willkommen zu phantastischer Anwendung und Dank zum
Wählen von Gipfel, Inc.
messages_fr.properties:
welcome.message=Bienvenu a l'application fantastique et remercie pour choisir
de Point Culminant, Inc.
(请注意,上面的内容是我们用自动翻译工具翻译成法语和德语的。)
除了字符串以外,你还可以对其他对象使用资源包。例如,你可以创建你自己的独立于道具文件的资源包实例。不管你是需要储存本地特定字符串还是需要处理其他更复杂的对象,资源包都能为你提供很好的选择。
import java.util.Locale;
import java.util.ResourceBundle;
public class ResourceBundleTip {
<wbr> <wbr> <wbr> <wbr> public static void main(String[] args) {<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> Locale locale = Locale.ENGLISH;<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> if ( args.length != 0 ) {<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> locale = new Locale(args[0]);<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> }<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> ResourceBundle messages = ResourceBundle.getBundle("messages", locale);<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> String message = messages.getString("welcome.message");<br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr><br>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> System.out.println(message); <wbr> <wbr> <wbr> <wbr><br>
<wbr> <wbr> <wbr> <wbr> }<br>
}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
java.util.ResourceBundle使用详解
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...
### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...
在Java中,`java.util.MissingResourceException`是当尝试从`ResourceBundle`中获取一个不存在的资源时抛出的异常。`ResourceBundle`用于管理应用的多语言支持,例如,通过加载.properties文件来提供不同的字符串...
private static ResourceBundle bundle = ResourceBundle.getBundle("cardBin"); private static Map, String> bankName = new HashMap(); static{ bankName.put("ABC", "中国农业银行"); bankName.put(...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 示例:获取某个键的值 String value = rb.getString("key"); System.out.println(value); } } ``` #### 三、使用 `java.util...
使用`java.util.ResourceBundle.getBundle()` `ResourceBundle`是Java中用于资源绑定的类,它可以用来获取国际化资源。这里我们使用它来加载`Properties`文件。 **代码示例:** ```java import java.util.Locale...
ResourceBundle rb = ResourceBundle.getBundle("path/to/your/file"); String value = rb.getString("key"); System.out.println(value); } } ``` ### 方法三:使用`java.util.PropertyResourceBundle`类 与...
ResourceBundle bundle = ResourceBundle.getBundle("config"); String value = bundle.getString("key"); System.out.println("Value: " + value); } } ``` 在这里,配置文件名(不包括扩展名)作为`...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 获取属性值 System.out.println(rb.getString("welcome")); } } ``` **注意事项:** - 属性文件通常需要放在特定目录下,且遵循...
- `java.util.ResourceBundle`是Java内置的国际化(i18n)支持,可以用来加载不同语言的资源文件,实现多语种替换。 - `org.springframework.context.MessageSource`是Spring框架提供的,它可以更加灵活地管理多...
- java.util.ResourceBundle#getBundle(),加载资源束。 ***.URL#openConnection(),创建一个URL连接实例。 - java.sql.DriverManager#getConnection(),通过驱动管理器获取数据库连接。 b) 建造者模式(Builder...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); // 示例:获取资源文件中的属性 String greeting = rb.getString("greeting"); System.out.println("Greeting: " + greeting); } ...
- `java.util.ResourceBundle#getBundle()`: 获取资源绑定。 - `java.sql.DriverManager#getConnection()`: 获取数据库连接。 - `java.sql.Connection#createStatement()`: 创建SQL语句。 - `java.sql.Statement#...
Ø java.util.ResourceBundle:用于加载一个国家、语言资源包。 Ø java.util.Locale:用于封装一个特定的国家/区域、语言环境。 Ø java.text.MessageFormat:用于格式化带占位符的字符串。 为了实现程序的国际...
Xml ResourceBundle的实现基于Java的`java.util.ResourceBundle`类和`java.util.PropertyResourceBundle`类的扩展。通过创建自定义的ResourceBundle类,我们可以解析XML文件并加载其中的资源。这个过程通常包括以下...
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); ``` 这个方法通常用于处理不同语言环境下的资源配置。 3. **使用java.util.PropertyResourceBundle类的构造函数** 如果你直接需要...
JDK 11 中提供了多种消息和资源束,例如java.util.ResourceBundle、java.util.ListResourceBundle 等。开发者可以使用这些类和接口来实现软件的国际化。 JDK 11 国际化指南的应用 JDK 11 国际化指南的应用非常广泛...
9. **国际化与本地化**:如果软件支持多语言,那么就涉及到Java的本地化机制,如`java.text.MessageFormat`和`java.util.ResourceBundle`。 10. **测试**:软件开发过程中,单元测试和集成测试必不可少,可能使用...