Java操作属性文件与国际化
在前面讲到的java类集中的Hashtable中,有一个子类Properties,此类定义如下:
public class Properties extends Hashtable<Object,Object>
该类表示了一个持久的属性集。Properties可保存在流中或从流中加载。属性列表每个键及其对应的值都是一个字符串。
常用方法:
| 1. | String getProperty(String key) | 用指定的键在此属性列表中搜索属性 |
| 2. | String getProperty(String key,Sting defaultValue) | 用指定的键在此属性列表中搜索属性 |
| 3. | void list(PringStream out) | 将属性列表输出到指定的输出流 |
| 4. | void list(PrintWriter out) | 将属性列表输出到指定的输出流 |
| 5. | void load(InputStrean is) | 从输入流中读取属性列表 |
| 6. | void load(Reader reader) | 按简单的面向行的格式从输入字符流中读取 |
| 7. | void loadFromXML(InputStream in) | 将指定输入流中由XML文档所表示的书友属性加载到此属性列表 |
| 8. | Object setProperty(String key,String value) | 调用hashtable的方法put |
| 9. | void store(OutputStream out,String comments) | 将属性列表写入输出流 |
| 10. | void store(Writer writer,String comments) | 将属性列表写入输出字符流 |
| 11. | void storeToXML(OutputStream os,String comment) | 发出一个表示此表中包含的所有属性的XML文档 |
.
实例:
package com.fuwh.property; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties; public class PropertyTest01 {
public static void main(String[] args) {
//定义一个属性操作类
Properties property=new Properties();
property.setProperty("魏", "曹操");
property.setProperty("蜀", "刘备");
property.setProperty("吴", "孙权");
System.out.println("属性存在:"+property.getProperty("魏","假曹操"));
System.out.println("属性存在:"+property.getProperty("蜀国","假刘备")); //将此属性保存在一个属性文件中(sanguo.properties)
System.out.println("*** 写入属性文件 ***");
try {
property.store(new FileOutputStream(new File("sanguo.properties")), "三国争霸");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("*** 从属性文件中读取 ***");
Properties readFromProperties=new Properties();
try {
readFromProperties.load(new FileInputStream("sanguo.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("三国:"+readFromProperties.getProperty("三国"));
System.out.println("魏:"+readFromProperties.getProperty("魏"));
System.out.println("四国:"+readFromProperties.getProperty("四国","四国不存在")); System.out.println("*** 写入XML文件 ***");
try {
property.storeToXML(new FileOutputStream(new File("sanguo.xml")), "三国");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} System.out.println("*** 从XML文件中读取 ***");
Properties readFromXML=new Properties();
try {
readFromXML.load(new FileInputStream("sanguo.properties"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("三国:"+readFromXML.getProperty("三国"));
System.out.println("蜀:"+readFromXML.getProperty("蜀"));
System.out.println("四国:"+readFromXML.getProperty("四国","四国不存在")); }
}

国际化:
国际化程序,说白了,就是多语言对应,根据访问人的地区来选择显示何种语言。
在Java中,要实现国际化,需要使用到的类是:Local,ResourceBoundle,MessageFormat几个类。
Local:
类的定义如下:
public final class Local extends Object implements Cloneable,Serializable
构造方法:
Local(String language):根据语言代码构造一个语言环境
Local(String language,String country):根据语言和国家/地区构造一个语言环境
Local(String language,String country,String variant):根据语言、国家/地区和变量构造一个语言环境
Local对象表示了特定的地理、政治和文化地区。语言参数是一个有效的ISO语言代码,这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:http://www.loc.gov/standards/iso639-2/englangn.html。
国家/地区参数是一个有效的 ISO 国家/地区代码。这些代码是由 ISO-3166
定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。
我们也可以在浏览器中找到,例如:

前面两位小写的就是ISO语言代码,后面两位大写的就是国家代码。
在Local类中提供了很多常量,可以很方便的创建Local对象。
ResourceBundle:
类的定义如下:
public abstract class ResourceBundle extends Object
可以发现,这是一个抽象类。可以通过类中的getBundle方法来获取ResourceBundle对象。
资源包包含特定与语言环境的对线个,当程序需要一个特定与语言环境的资源时,程序可以从适合当前用户语言环境的资源包中加载它,使用这种方式可以实现国际化。
在定义资源文件的时候,必须要采取 文件名_ISO语言代码_ISO国家地区代码 的格式。
MessageFormat:
类的定义如下:
public class MessageFormat extends Format
这个类继承自Format类,提供了对消息的一些格式化,在Format类中,还有DateFormat,NumberFormat等子类,分别提供对日期和数字的格式化。
主要方法:
static String format(String pattern,Object... arguments)
实例:
package com.fuwh.intel; import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle; public class IntelTest01 {
public static void main(String[] args) {
Locale china=new Locale("zh","CN");
Locale japan=new Locale("ja","JP");
ResourceBundle rbChina=ResourceBundle.getBundle("welcome",china);
ResourceBundle rbJapan=ResourceBundle.getBundle("welcome",japan);
String str1=rbChina.getString("welcomeMessage");
String str2=rbJapan.getString("welcomeMessage");
System.out.println("中文:"+MessageFormat.format(str1, "张三"));
System.out.println("日文:"+MessageFormat.format(str2, "趙さん"));
}
}

Java操作属性文件与国际化的更多相关文章
- Java操作属性文件,支持新增或更新多个属性
Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...
- Java操作属性文件之工具类
最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...
- java:Properties属性文件概念
java:Properties属性文件概念 在java之前的国际化程序中提出了一个属性文件的概念,属性文件的后缀是:*.properties,那么在java中提供了意个属性文件的专门操作类,Prope ...
- JAVA操作properties文件
va中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties ...
- Java操作XML文件 dom4j 篇
在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...
- JAVA 操作 DBF 文件数据库
1.依赖夹包 javadbf-[].4.1.jar jconn3.jar 2.添加属性文件 jdbc.properties jdbc.driverClassName=com.sybase.jdbc3. ...
- 依据不同的操作系统读取配置文件/java读取属性文件代码
package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @d ...
- [转载]Java操作Excel文件的两种方案
微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...
- Java学习笔记(二)——Java操作properties文件
[前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...
随机推荐
- nginx session 配置失效解决
nginx 反向代理后台web服务器session path导致的session 失效,特此总结下配置方法: 配置如下: location ^~ /2016tyjf_dev/djwechat { pr ...
- Python2.x的编码问题
1. 计算机编码历史 ASCII Python的默认编码,其是一种单字节的编码.刚开始计算机世界里只有英文,而单字节可以表示256个不同的字符.最开始ASCII只定义了128个字符编码,包括96个文字 ...
- 第201621123043 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书馆管理系统或购物车. 2.1 简述如何 ...
- logging日志
import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname) ...
- javascript 腾讯ABS云平台面试题及面试经历
既然说到面试前端肯定是Javascript各种问,只好各种答. 面试题肯定离不了,最近热门的Vue.js,React.js,Angular.js,Gulp,Webpack还有各种Js问题,还有令人头痛 ...
- 开始使用HTML5和CSS3验证表单
使用HTML5和CSS3验证表单 客户端验证是网页客户端程序最常用的功能之一,我们之前使用了各种各样的js库来进行表单的验证.HTML5其实早已为我们提供了表单验证的功能.至于为啥没有流行起来估计是兼 ...
- JAVA_SE基础——8.基本数据类型
基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...
- 在thinkphp框架中使用后台传值过来的数组,在hightcart中使用数组
js的数组是和php里面数组是不一样的,所以模板文件需要先接受,然后利用Js代码转化之后再使用,接受后台的数组有几种办法 1.后台传过来的json数组,利用Js是可以接受的,然后将json数据利用js ...
- “认证发布”和“获取展示”,如何在 SharePoint 中正确使用 RSS Feed。
在我们进行的日常工作中,是由一部分信息需要 Share 给其他人或者组织的.SharePoint 虽然支持在某个 Site Collection 中互通信息,但是跨 Site Collection 的 ...
- ASP.NET CORE系列【一】搭建ASP.NET CORE项目
为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug太多,现在2.0也发布很久了,决定研究一下. ASP.NET Core官方 ...