在前面讲到的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. [Scala] 实现 NDCG

    一.关于 NDCG [LTR] 信息检索评价指标(RP/MAP/DCG/NDCG/RR/ERR) 二.代码实现 1.训练数据的加载解析 import scala.io.Source /* * 训练行数 ...

  2. 算法题丨Longest Consecutive Sequence

    描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence ...

  3. .NET Core初体验 在window上构建第一个app

    ASP.NET Core 是一个跨平台,高性能的开源框架,用于构建现代化的,基于云的互联网应用程序.使用 ASP.NET Core ,您可以: 构建Web应用程序和服务,IoT应用程序和移动后端. 在 ...

  4. JavaWeb学习笔记二 Http协议和Tomcat服务器

    Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...

  5. Django--入门篇:下载与项目生成

    django作为python web应用开发最火的框架,没有之一,今天就给大家介绍django的一些入门知识. 我们选择pycharm工具,首先得要有django. 1.下载django --pip ...

  6. Windows下Apache的下载安装启动停止

    一:下载 打开任意浏览器,输入网址:http://httpd.apache.org/ 进入如下界面: 我们选择最新版Apache httpd 2.4.12Released,点击Download,进入如 ...

  7. C第十八次课

    总结知识点: 指针 1.指针变量 指针变量的定义:例8.1 指针变量的引用:例8.2: 指针变量作为函数参数:例8.3 swap函数,例8.4 比较排序函数 2.指针数组 数组元素的指针:int *p ...

  8. RAID6三块硬盘离线导致的数据丢失恢复过程

    小编我最近参与了一例非常成功的数据恢复的案例,在这里分享给大家.用户是一组6块750G磁盘的 RAID6,先后有两块磁盘离线,但维护人员在此情况下依然没有更换磁盘,所以在第三块硬盘离线后raid直接崩 ...

  9. ebtables和iptables与linux bridge的交互

    本文为翻译文,不一定是逐字逐句的翻译,而且中间会加上自己的一点见解,如有理解错误的地方,还请大家指出,我定虚心学习.原文见链接 其中斜体字是自己的理解,建议和ebtables手册和iptables手册 ...

  10. Python脚本自动提取和替换代码中的中文

    # -*- coding: utf-8 -*- import os import os.path import re import sys reload(sys) sys.setdefaultenco ...