×

resourcebundle stat dl

resourcebundle(private static ResourceBundle config = ResourceBundle.getBundle(“config”);)

admin admin 发表于2023-02-09 10:17:01 浏览52 评论0

抢沙发发表评论

本文目录

private static ResourceBundle config = ResourceBundle.getBundle(“config”);

ResourceBundle 类是资源包包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包中加载它。使用这种方式,可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。
getBundle(String baseName)
使用指定的基本名称、默认的语言环境和调用者的类加载器获取资源包。 说白了就是加载baseName 这个文件 “ baseName”指的是一个文件的名称

java语言里面,ResourceBundle类中的getStringArray方法的使用

ResourceBundle.getBundle(“conf“);返回的是一个PropertyResourceBundle对象。
看了看JDK源代码,PropertyResourceBundle在读文件时使用Properties.load(stream),它存储的是String。所以它永远返回的都是String而不是String数组。
简言之,PropertyResourceBundle不支持getStringArray这个方法。
你还是用split吧。

ResourceBundle和Properties类的区别

一般来说,ResourceBundle类通常是用于针对不同的语言来使用的属性文件。
而如果你的应用程序中的属性文件只是一些配置,并不是针对多国语言的目的。那么使用Properties类就可以了。
通常可以把这些属性文件放在某个jar文件中。然后,通过调用class的getResourceAsStream方法,来获得该属性文件的流对象,再用Properties类的load方法来装载。
示例如下:
Class TestLoad {
public static void main( String argv) {
InputStream is = TestLoad.class.getResourceAsSteam(“myprops.properties“);
Properties p = new Properties();
p.load(is);
System.out.println(p.get(“MAIL_SERVER_HOSTNAME“));
}
}
关于ResourceBundle
有时候有些简单的配置文件可以没必要使用xml,其实ResourceBundle类就已经做的很好的。它甚至可以搜索到classpath里的jar文件中一些properties文件。
例如在jar文件中的根目录放置一个文件:test.properties,然后只要这个jar文件在classpath里。就可以使用这样的语句来获得一些属性:
ResourceBundle rb = ResourceBundle.getBundle(“test“);
String s = rb.getString(“MQ_Server_Address“);
System.out.println(s);

如何使用resourceBundleEditor编辑器来编辑属性文件

ResourceBundle Editor是一个用于编辑本地化的属性文件(localized properties files)。它让你通一个屏幕就能够同时管理所有相关联属性文件中的key/value信息。它所具有的功能包括:自动为Keys分类,能够提示丢失掉 的,重复的,相似的values等.如果你的E文很好,那可以看看官方的介绍,及安装方法

如何用ResourceBundle来读取配置文件

对于Java基础很好的人来说,这个应该是简单的不能再简单的了。不过估计一些ja va新手不一定会知道(比如我,上次为别人写一个东西,需要从外存读文件来设置对象的值,因为不知道
有ResourceBundle这种东西,就自己用FileReader在那搞,折腾了半天,最后还不能把配置文件和jar包打在一起发布,郁闷)。
我们可以在每个对象中用ResourceBundle来读配置文件设置自己的值,也可以用一个固定的对象去读取然后保存下来以便以后使用。在每个class中都去读配置文件会导致代码散乱,所以,只
用一个class来进行读取是比较合理的做法。另外,由于I/O的速度比较慢,如果负责读取配置文件的class是在每次用到这些配置项的时候去读文件,就容易成为性能上的瓶颈。为避免这样的
情况,可以在初始化的时候就把配置项一次全部读入,并保存在静态成员变量中。不过不排除会有对配置项进行动态读取的需求(因为某些应用是不能停掉的,比如应用服务器。在这些应用
运行期间更新了配置文件,就需要在不不关闭应用的情况下重新读入配置项)。以下的例子只考虑了静态读取的情况,如果是动态读取,则可以把读取配置文件的代码放到某个方法中,通过
对某个事件的响应来调用该方法更新配置项。
假设我们用来读取配置文件的class叫TestResourceBundle,配置项的值来自一个叫property_en.properties的文件(该文件应该放到TestResourceBundle所对应的CLASSPATH的目录),有两
个值需要配置:name和value。首先,需要在该class中定义一些字符串常量,如下:
public static final String PROPERTIES_FILE_NAME = “property“;
public static final String MY_NAME_KEY = “name“;
public static final String MY_VALUE_KEY = “value“;
其中PROPERTIES_FILE_NAME指出了文件的名字。实际读取的文件应该是property_en.properties,但是只需要告诉ResourceBundle文件名是“property“就足够了。下划线和后面的“en“表示的
是本地化信息。这里的en代表“ENGLISH“,后缀properties是默认的。MY_NAME_KEY和MY_VALUE_KEY表示配置项在配置文件中的名字,用ResourceBundle的getString方法根据这些名字去读取相
应的值。
然后,定义需要配置的变量。这些变量应该是静态的:
private static String myName;
private static String myValue;
然后进行静态初始化:
static {
try {
ResourceBundle bundle = ResourceBundle
.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
myName = bundle.getString(MY_NAME_KEY).trim();
myValue = bundle.getString(MY_VALUE_KEY).trim();
}
catch(Exception ex) {
System.err.println( “[Property]:Can’t Load property.properties“);
myName = “default name“;
myValue = “default value“;
System.out.println( “myName will use the default value: “ + myName);
System.out.println( “myValue will use the default value: “ + myValue);
}
}
ResourceBundle bundle = ResourceBundle
.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
这行代码初始化了一个ResourceBundle,Locale.ENGLISH用于指明本地化情况,因此会从“property_en.properties“中去读取配置项。如果是Locale.CHINA,则会从property_zh.properties
中读取。这种机制使得程序的本地化变得简单。
myName = bundle.getString(MY_NAME_KEY).trim();
这行代码读入配置文件中名为“name“的变量的值,并赋给静态变量myName。
此外这段代码还包含了例外处理,当读取失败的时候,配置项会使用缺省值。
这样,该类就通过ResourceBundle读取外存上的配置文件对数据进行了配置。
property_en.properties文件的内容如下
# properties sample
#
name=sega
value=100
其中以’#’开头的行为注释,ResourceBundle在遇到这些行的时候会忽略掉。
以下为完整的测试代码:
public class TestResourceBundle {
public static final String PROPERTIES_FILE_NAME = “property“;
public static final String MY_NAME_KEY = “name“;
public static final String MY_VALUE_KEY = “value“;

private static String myName;
private static String myValue;
static {
try {
ResourceBundle bundle = ResourceBundle
.getBundle(PROPERTIES_FILE_NAME, Locale.ENGLISH);
myName = bundle.getString(MY_NAME_KEY).trim();
myValue = bundle.getString(MY_VALUE_KEY).trim();
}
catch(Exception ex) {
System.err.println( “[Property]:Can’t Load property.properties“);
myName = “default name“;
myValue = “default value“;
System.out.println( “myName will use the default value: “ + myName);
System.out.println( “myValue will use the default value: “ + myValue);
}
}

public void print() {
System.out.println(“My name is: “ + myName);
System.out.println(“My value is: “ + myValue);
}
public static void main(String args) {
TestResourceBundle test = new TestResourceBundle();
test.print();
}
}

java:ResourceBundle rb=ResourceBundle.getBundle(“LocalString“);

使用ResourceBundle访问本地资源
在设计时,我们往往需要访问一些适合本地修改的配置信息,如果作为静态变量,那么每次修改都需要重新编译一个class,.config保存此类信息并不适合,这时我们需要ResourceBundle。
通过ResourceBundle,我们需要访问位于/WEB-INF/classes目录下的一个后缀名为properties的文本类型文件,从里面读取我们需要的值。
Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle(“ConnResource“, locale);
String value = localResource.getString(“test“);
System.out.println(“ResourceBundle: “ + value);
这里对应了/WEB-INF/class/ConnResource.properties文件内容为:
test=hello world
打印出来的结果就是hello world

请注意,这里我们可以利用Locale和ResourceBundle的这个组合创建国际化的java程序。我们可以把locale实例化为new Locale(“zh“,“CN“);
通过ResourceBundle.getBundle(“MessagesBundle“, locale);
系统将自动寻找MessagesBundle_zh_CN,即定义为中国大陆地区简体中文。如果没有该文件,则会依次寻找MessagesBundle_zh,MessagesBundle,直到找到为止

PropertyResourceBundle 什么意思

PropertyResourceBundle 是 ResourceBundle 的一个具体子类,它使用属性文件中的静态字符串集合来管理语言环境资源。有关资源包的更多信息,请参阅 ResourceBundle。有关属性文件的更多信息,特别是有关字符编码的信息,请参阅 Properties。
与其他资源包类型不同,不能为 PropertyResourceBundle 创建子类。相反,要提供含有资源数据的属性文件。ResourceBundle.getBundle 将自动查找合适的属性文件并创建引用该文件的 PropertyResourceBundle。有关搜索和实例化策略的完整描述,请参阅 ResourceBundle.getBundle。
下面的示例显示了资源包系列中具有基本名称 “MyResources“ 的成员。文本定义了包 “MyResources_de“,这是该包系列中的德语成员。该成员基于 PropertyResourceBundle,因此文本就是文件 “MyResources_de.properties“ 的内容(一个相关的 示例显示了如何将包添加到该系列中,该系列作为 ListResourceBundle 的子类来实现)。本示例的键形式为 “s1“ 等等。实际的键完全取决于您的选择,只要它们与在程序中使用的、用于从包中检索对象的键相同即可。键是区分大小写的。
# MessageFormat pattern
s1=Die Platte \“{1}\“ enthält {0}.
# location of {0} in pattern
s2=1
# sample disk name
s3=Meine Platte
# first ChoiceFormat choice
s4=keine Dateien
# second ChoiceFormat choice
s5=eine Datei
# third ChoiceFormat choice
s6={0,number} Dateien
# sample date
s7=3. März 1996

Java中resourceBundle和Properties的区别

一般来说,ResourceBundle类通常是用于针对不同的语言来使用的属性文件。
而如果你的应用程序中的属性文件只是一些配置,并不是针对多国语言的目的。那么使用Properties类就可以了。
通常可以把这些属性文件放在某个jar文件中。然后,通过调用class的getResourceAsStream方法,来获得该属性文件的流对象,再用Properties类的load方法来装载。
示例如下:
Class TestLoad {
public static void main( String argv) {
InputStream is = TestLoad.class.getResourceAsSteam(“myprops.properties“);
Properties p = new Properties();
p.load(is);
System.out.println(p.get(“MAIL_SERVER_HOSTNAME“));
}
}
关于ResourceBundle
有时候有些简单的配置文件可以没必要使用xml,其实ResourceBundle类就已经做的很好的。它甚至可以搜索到classpath里的jar文件中一些properties文件。
例如在jar文件中的根目录放置一个文件:test.properties,然后只要这个jar文件在classpath里。就可以使用这样的语句来获得一些属性:
ResourceBundle rb = ResourceBundle.getBundle(“test“);
String s = rb.getString(“MQ_Server_Address“);
System.out.println(s);

resourcebundle.getBundle()如何读取webroot文件下的属性文件

ResourceBundle rb=ResourceBundle.getBundle(“属性文件路径“);
//将文件的key取出
Enumeration《String》 em=rb.getKeys();
//存放属性文件的键值对
HashMap《String, String》 hm=new HashMap《String, String》();
//根据key取值
while(em.hasMoreElements()){
String key=em.nextElement();
String value=rb.getString(key);
hm.put(key, value);
}
//属性文件的内容全部在map中了

ResourceBundle 有什么用

一般都是用于读取读取properties文件的
例如
private static ResourceBundle rb =
ResourceBundle.getBundle(“test.properties“);
然后通过rb.getString(“aa“);
来获取test.properties文件中aa属性的值。