在前面讲到的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. Linux下的指令:find,which

    1. 在Linux系统下,使用find来查找文件: find [path] [condition] [operation] path指定了在哪个目录查找,condition限定了查找条件,operat ...

  2. [日常] NOIP 2017滚粗记

    突然挑了这么个滑稽的时间补了游记... (成绩日常延时再加上人太菜估计基本上就是颓废记录) 然而文化课太废可能会被强制退役QAQ所以先补了再说吧 day0 一大早被老姚交代了个开十一机房门的任务... ...

  3. JavaScript(第二十二天)【动态加载js和css】

    学习要点: 1.元素位置 2.动态脚本 3.动态样式 本章主要讲解上一章剩余的获取位置的DOM方法.动态加载脚本和样式.   一.元素位置 上一章已经通过几组属性可以获取元素所需的位置,那么这节课补充 ...

  4. 2018.3.29 DIV位置调整代码

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  5. C语言程序设计(基础)- 第14、15周作业

    从本周开始,将作业标记为学校自然周,而不是开课的周数. 要求一(25经验值) 完成14.15周的所有PTA中题目集. 注意1:一周两次pta作业,包括四次. 要求二(50经验值) 博客的具体书写内容和 ...

  6. 201621123068 Week03-面向对象入门

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你 ...

  7. codves 3044 矩形面积求并

    codves  3044 矩形面积求并  题目等级 : 钻石 Diamond 题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Desc ...

  8. nyoj 寻找最大数

    寻找最大数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920813467185 ...

  9. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  10. Mybatis-select-返回值类型错误理解

    Mybatis :Cause: java.lang.UnsupportedOperationException异常: 今天在写一个练手项目,作为初学Mybatis的小白,想着这里findByEmp_i ...