聊聊ResourceBundle和properties读取配置文件的区别

java.util.ResourceBundle 和java.util.properties 读取配置文件区别

这两个类都是读取properties格式的文件的,而Properties同时还能用来写文件。

Properties的处理方式是将其作为一个映射表,而且这个类表示了一个持久的属性集,他是继承HashTable这个类。

ResourceBundle本质上也是一个映射,但是它提供了国际化的功能。

假设电脑设置的地区是中国大陆,语言是中文

那么你向ResourceBundle(资源约束名称为base)获取abc变量的值的时候,ResourceBundle会先后搜索

base_zh_CN_abc.properties

base_zh_CN.properties

base_zh.properties

base.properties

文件,直到找到abc为止

相应的,在英国就会去找base_en_GB_abc.properties等。

因此,你只需要提供不同语言的资源文件,而无需改变代码,就达到了国际化的目的。

另外,在.properties里面,不能直接使用中文之类文字,而是要通过native2ascii转乘\uxxxx这种形式

附:

1.编码问题:

无论系统的默认编码是什么,ResourceBundle在读取properties文件时统一使用iso8859-1编码。

因此,如果在默认编码为 GBK的系统中编写了包含中文的properties文件,经由ResourceBundle读入时,必须转换为GBK格式的编码,否则不能正确识别。

2.用法:

ResourceBundle:

ResourceBundle conf= ResourceBundle.getBundle("config/fnconfig/fnlogin");
String value= conf.getString("key");

Properties:

Properties prop = new Properties();
try { InputStream is = getClass().getResourceAsStream("xmlPath.properties");
prop.load(is);
//或者直接prop.load(new FileInputStream("c:/xmlPath.properties"));
if (is != null) { is.close();
} } catch (Exception e) { System.out.println( "file " + "catalogPath.properties" + " not found!\n" + e); } String value= prop.getProperty("key").toString();

ResourceBundle 读取Properties文件及乱码处理

package read;
import java.util.ResourceBundle;
/**
 * 属性文件工厂类
 * @author W
 * @version V1.0
 * @date 2013-4-17
 */
public interface ReadPropertiesFactory {
	public ResourceBundle getErrorResource();
}
================================================  

package read;
import java.util.ResourceBundle;

/**
 *
 * @author
 * @version V1.0
 * @date 2013-5-13
 */
public class ReadPropertiesFactoryImpl implements ReadPropertiesFactory {
	private ResourceBundle errorResouce;

	public ResourceBundle getErrorResource() {
		if(errorResouce == null){
                     //只要读取properties的名称就可以了
			errorResouce = ResourceBundle.getBundle("errorMessage");
		}
		return errorResouce;
	}
}
===============================================

package util;
import java.io.UnsupportedEncodingException;
/**
 *
 * @author
 * @version V1.0
 * @date 2013-4-17
 */
public class StringHanlder {
	public static String transformCodeIso8859Style(String code , String codeStyle) throws UnsupportedEncodingException{
		return new String(code.getBytes("ISO-8859-1"),codeStyle);
	}
	public static String transformCodeUtf8Style(String code , String codeStyle) throws UnsupportedEncodingException{
		return new String(code.getBytes("utf-8"),codeStyle);
	}
}
=========================================================================
errorMessage.properties文件中的属性
E01010024=查询数据异常!
=============================================================================
package www.man.comService;
import java.util.ResourceBundle;
import read.ReadPropertiesFactoryImpl;
public class TestService {public static void main(String[] args) {
String a= TestService.getErrorValue("E01010070");System.out.println(a);}
private static  ResourceBundle getErrorResource() {
ReadPropertiesFactoryImpl readPropertiesFactory =new ReadPropertiesFactoryImpl();
return readPropertiesFactory.getErrorResource();
}
public  static String getErrorValue(String key){
try{
return util.StringHanlder.transformCodeIso8859Style(getErrorResource().getString(key),"utf-8");
}catch(Exception e){
e.printStackTrace();return "";
}
}}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java读取Properties文件几种方法总结

    使用J2SE API读取Properties文件的六种方法 1.使用Java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2.使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle rb

  • Java读取.properties配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配置文件就比较容易. 介绍几种读取方式: 1.基于ClassLoder读取配置文件 注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便. Properties properties = new Properties(); // 使用ClassLoader加载propert

  • Java读取Properties文件的七种方法的总结

    Java读取Properties文件的方法总结 读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法: 其实很多都是大同小异,概括起来就2种: 先构造出一个InputStream来,然后调用Properties#load() 利用ResourceBundle,这个主要在做国际化的时候用的比较多. 例如:它能根据系统语言环境自动读取下面三个properties文件中的一个: resource_en_US.properties resource_zh_CN.prop

  • Java中的几种读取properties配置文件的方式

    相信对于一名JAVA开发者开说properties文件一定再熟悉不过了,比如一下配置: config.properties会经常存放一些系统常量,版本号,路径之类的 database.properties存放数据库的连接参数 log4j.properties 日志的一些基本配置 redis.properties 缓存数据库的一些配置 当然前缀是根据用能自行定义的,一般来说文件的内容的格式是"键=值"的格式,文本注释信息可以用"#"来注释,下面来说说开发中如何读写pr

  • Java 操作Properties配置文件详解

    1 简介: JDK提供的java.util.Properties类继承自Hashtable类并且实现了Map接口,是使用一种键值对的形式来保存属性集,其中键和值都是字符串类型. java.util.Properties类提供了getProperty()和setProperty()方法来操作属性文件,同时使用load()方法和store()方法加载和保存Properties配置文件. java.util.ResourceBundle类也提供了读取Properties配置文件的方法,Resource

  • 聊聊ResourceBundle和properties读取配置文件的区别

    java.util.ResourceBundle 和java.util.properties 读取配置文件区别 这两个类都是读取properties格式的文件的,而Properties同时还能用来写文件. Properties的处理方式是将其作为一个映射表,而且这个类表示了一个持久的属性集,他是继承HashTable这个类. ResourceBundle本质上也是一个映射,但是它提供了国际化的功能. 假设电脑设置的地区是中国大陆,语言是中文 那么你向ResourceBundle(资源约束名称为b

  • Springboot从配置文件properties读取字符串乱码的解决

    目录 从配置文件properties读取字符串乱码 方式一 方法二 properties文件的属性值为中文,读取时乱码 把属性值直接转成unicode编码 在方法中转码 从配置文件properties读取字符串乱码 当读取properties的内容为:发现中文乱码.原因是由于默认读取的为ISO-8859-1格式,因此需要切换为UTF-8. 主要方式有如下两种: 方式一 在你的application.properties中增加如下配置,避免中文乱码 spring.http.encoding.ena

  • Java语言读取配置文件config.properties的方法讲解

    应用场景 有些时候项目中会用到很多路径,并且很可能多个路径在同一个根目录下,那为了方便配置的修改,达到只修改根目录即可达到一改全改的效果,此时就会想到要是有变量就好了: 另外有时候路径中的文件名是不确定的,要靠业务程序运行时去判断文件名应该如何设置,而又希望此文件下的目录名是确定的,那此时用变量也是比较好的解决方式. 一.配置文件config.properties是放在src根目录下的:例如我的是 /PropertiesTest/src/com/xuliugen/project/type.pro

  • JavaWeb读取配置文件的四种方法

    方式一:采用ServletContext读取 获取配置文件的realpath,然后通过文件流读取出来或者通过方法getReasurceAsStream(). 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的classes目录中,也可以在应用层级及WEB-INF的目录中.文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在WEB-INF及Web-Root下面等.因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xm

  • SpringBoot读取配置文件常用方法解析

    首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息. 传统项目读取配置方式# 读取xml配置文件 public String readFromXml(String xmlPath, String property) { SAXReader reader = new SAXReader(); Document doc = null; try { doc = reader.read(new F

  • 浅谈SpringBoot主流读取配置文件三种方式

    读取配置SpringBoot配置文件三种方式 一.利用Bean注解中的Value(${})注解 @Data @Component public class ApplicationProperty { @Value("${application.name}") private String name; } 该方式可以自动读取当前配置文件appliation.yml  或者application.properties中的配置值 区别在于读取yml文件时候支持中文编码,peoperties需

  • 使用@PropertySource读取配置文件通过@Value进行参数注入

    目录 @PropertySource读取配置文件通过@Value参数注入 Spring读取配置@Value.@PropertySource.@ConfigurationProperties使用 @Value @Value中$和#的区别 @PropertySource:加载配置属性源 @ConfigurationProperties @PropertySource读取配置文件通过@Value参数注入 有参数文件如下test.properties project.author=wpfc projec

  • Java中spring读取配置文件的几种方法示例

    Spring读取配置XML文件分三步: 一.新建一个Java Bean: package springdemo; public class HelloBean { private String helloWorld; public String getHelloWorld() { return helloWorld; } public void setHelloWorld(String helloWorld) { this.helloWorld = helloWorld; } } 二.构建一个配

  • Springboot读取配置文件及自定义配置文件的方法

    1.创建maven工程,在pom文件中添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency

  • springboot读取配置文件中的参数具体步骤

    springBoot是java开发中会经常用到的框架,那么在实际项目中项目配置了springBoot框架,应该如何在项目中读取配置文件中的参数呢? 1.打开eclipse开发工具软件. 2.在项目中确保pom.xml文件已引用了[spring-boot-starter-web]jar包. 因为springBoot启动的时候会自动去获取项目中在resources文件录目下的名为application.properties参数配置文件. 3.在项目中的src/main/resource文件录目下创建

随机推荐