Java语言对properties资源文件的处理——ResourceBundle 类的使用
来源:互联网 发布:agv调度系统 源码下载 编辑:程序博客网 时间:2024/05/29 12:35
开始之前,我们先解释一下什么是properties类型的资源文件。
在Java语言中,使用一种以.properties为扩展名的文本文件作为资源文件,该类型的文件的内容格式为类似:
#注释语句
some_key=some_value
形式。以#开头的行作为注释行,ResourceBundle类处理时会加以忽略;其余的行可以以 key名=value值 的形式加以记述。
Java的ResourceBundle类可以对这种形式的文件加以处理。
ResourceBundle类的使用方法也非常简单。我们使用一个例子来说明。
我们假设有下面2个properties文件:
TestProperties.properties
#key=value
userIdLabel=User Id:
userNameLabel=User Name:
#key=value
userIdLabel=User Id:
userNameLabel=User Name:
TestProperties_zh_CN.properties
#key=value
userIdLabel=用户ID:
userNameLabel=用户名:
#key=value
userIdLabel=用户ID:
userNameLabel=用户名:
大家可能注意到TestProperties_zh_CN.properties文件名中有一个_zh_CN名称,该名称其实是用于资源文件的本地化处理。什么是本地化呢?就是说,根据用户所处的地区或语言的不同,分别准备不同的资源文件,这样就可以为不同的用户准备不同的界面但使用的却是同一套系统逻辑。
我们上面的2个文件就是2套不同的资源。
我们是使用ResourceBundle类处理不同资源的代码:
TestProperties.java
package com.test.properties;
import java.util.Enumeration;
import java.util.Locale;
import java.util.ResourceBundle;
public class TestProperties {
public static void main(String[] args) {
String resourceFile = "com.test.properties.TestProperties";
/*
* 创建一个默认的ResourceBundle对象。ResourceBundle会查找包com.test.properties下的TestProperties
* .properties的文件。com.test.properties是资源的包名,它跟普通java类的命名规则完全一样: 区分大小写;
* 扩展名 .properties 省略;就像对于类可以省略掉 .class扩展名一样;
* 资源文件必须位于指定包的路径之下(位于所指定的classpath中)。
* 另外,对于非西欧字符(比如中日韩文等),需要使用native2ascii命令或类似工具将其转换成ascii码文件格式,否则会显示乱码。
*/
System.out.println("---Default Locale---");
ResourceBundle resource = ResourceBundle.getBundle(resourceFile);
testResourceBundle(resource);
System.out.println("---Locale.SIMPLIFIED_CHINESE---");
/*
* 创建一个指定Locale(本地化)的ResourceBundle对象,这里指定为Locale.SIMPLIFIED_CHINESE。所以ResourceBundle会查找com
* .test.properties.TestProperties_zh_CN.properties的文件。 中文相关的Locale有:
* Locale.SIMPLIFIED_CHINESE : zh_CN
*/
resource = ResourceBundle.getBundle(resourceFile,
Locale.SIMPLIFIED_CHINESE);
// Locale.CHINA : zh_CN
// Locale.CHINESE: zh
testResourceBundle(resource);
// 显示
}
private static void testResourceBundle(ResourceBundle resource) {
// 取得指定关键字的value值
String userIdLabel = resource.getString("userIdLabel");
System.out.println(userIdLabel);
// 取得所有key值
Enumeration<String> enu = resource.getKeys();
System.out.println("keys:");
while (enu.hasMoreElements()) {
System.out.println(enu.nextElement());
}
}
}
解说:
1、为了便于理解,我们把解说放在Java源代码中了,这里不再详述了。
2、对于中文资源文件TestProperties_zh_CN.properties,需要使用native2ascii 命令将其转换为ascii码。例如:
native2ascii -encoding UTF-8 c:/TestProperties_zh_CN.properties c:/java/com/test/properties/TestProperties_zh_CN.properties
至于native2ascii的详细用法这里不做详述了。
3、将上面3个文件都保存在 c:/java/com/test/properties/ 目录下。其中TestProperties_zh_CN.properties为经过native2ascii转换后的文件。
4,编译执行,将会在屏幕上显示:
---Default Locale---
User Id:
keys:
userNameLabel
userIdLabel
---Locale.SIMPLIFIED_CHINESE---
用户ID:
keys:
userNameLabel
userIdLabel
- Java语言对properties资源文件的处理——ResourceBundle 类的使用
- Java语言对properties资源文件的处理 - ResourceBundle类的用
- 用ResourceBundle类读取properties资源文件的例子。
- Java中使用ResourceBundle访问资源文件(properties文件)
- Java中使用ResourceBundle访问资源文件(properties文件)
- Java中使用ResourceBundle访问资源文件(properties文件)
- java使用ResourceBundle访问资源文件(.properties文件)
- Java的ResourceBundle读取properties文件
- 读取资源属性文件(properties)java.util.ResourceBundle使用详解
- 使用ResourceBundle国际化资源文件读取properties详解
- 处理资源文件(Resources.properties)的字符问题 & 使用
- JAVA中ResourceBundle和Properties类的区别
- 使用ResourceBundle加载properties文件
- 使用ResourceBundle加载properties文件
- java 解析 properties-使用 ResourceBundle
- java实现对属性文件的增删改查以及ResourceBundle使用详解
- java.util.ResourceBundle使用详解及如何调用properties文件
- ResourceBundle和Properties类的区别
- 手机的MMI开发
- IM项目即将结束
- sp_MSforeachtable使用方法[转]
- Facade模式(外观模式)
- oracle中的视图详解
- Java语言对properties资源文件的处理——ResourceBundle 类的使用
- FileZilla字符集设置
- asp.net实现上传图片显示本地绝对路径图片
- 主流PHP版CMS
- 异或算法加密特征码(高级免杀)
- COM学习--2个地址
- 查找10到20的记录
- asp.net 开发疑问?
- 双链表