在前面讲到的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操作属性文件与国际化的更多相关文章

  1. Java操作属性文件,支持新增或更新多个属性

    Java操作属性文件.支持新增或更新多个属性 一.更新或新增单个属性的方法 /** * 写入properties信息 * @param filePath 绝对路径(包含文件名称和后缀名) * @par ...

  2. Java操作属性文件之工具类

    最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...

  3. java:Properties属性文件概念

    java:Properties属性文件概念 在java之前的国际化程序中提出了一个属性文件的概念,属性文件的后缀是:*.properties,那么在java中提供了意个属性文件的专门操作类,Prope ...

  4. JAVA操作properties文件

    va中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties ...

  5. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  6. JAVA 操作 DBF 文件数据库

    1.依赖夹包 javadbf-[].4.1.jar jconn3.jar 2.添加属性文件 jdbc.properties jdbc.driverClassName=com.sybase.jdbc3. ...

  7. 依据不同的操作系统读取配置文件/java读取属性文件代码

    package cn.com.css.common.util; /**  * @brief OSEnum.java 操作系统的枚举  * @attention  * @author 涂作权  * @d ...

  8. [转载]Java操作Excel文件的两种方案

    微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...

  9. Java学习笔记(二)——Java操作properties文件

    [前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...

随机推荐

  1. JavaScript(第六天)【函数】

    函数是定义一次但却可以调用或执行任意多次的一段JS代码.函数有时会有参数,即函数被调用时指定了值的局部变量.函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值. 一.函数声明   函 ...

  2. HDFS之HA机制

  3. 20162327WJH第五周作业

    学号 20162327 <程序设计与数据结构>第5周学习总结 教材学习内容总结 1.java是一种面向对象的语言.面向对象是一种编程方法.更是一种思维方式. 2.面向对象编程的终极目标是消 ...

  4. 利用flask 实现简单模版站

    from flask import Flask,render_template from flask import request app = Flask(__name__) @app.route(' ...

  5. Flask 学习 十三 应用编程接口

    最近这些年,REST已经成为web services和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了. REST的六个特性: 客户端-服务器(Client-Server)服务器 ...

  6. Flask 学习 四 数据库

    class Role(db.Model): __tablename__='roles' id = db.Column(db.Integer,primary_key=True) name = db.Co ...

  7. zookeeper提示Unable to read additional data from server sessionid 0x

    配置zookeeper集群,一开始配置了两台机器server.1和server.2. 配置参数,在zoo.cfg中指定了整个zookeeper集群的server编号.地址和端口: server.1=1 ...

  8. JAVA_SE基础——18.方法的递归

    方法的递归是指在一个方法的内部调用自身的过程,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用,接下来用一个最简单的例子来体现下方法递归,使用递归算法计算自然数之和: public ...

  9. Web Service的工作原理

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  10. nodejs(1-1)

    http://www.runoob.com/nodejs/nodejs-tutorial.html