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

 更新时间:2021年07月22日 11:40:45   作者:Syria  
这篇文章主要介绍了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 "";
}
}}

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

相关文章

  • 详解Spring Boot 属性配置和使用

    详解Spring Boot 属性配置和使用

    本篇文章主要介绍了详解Spring Boot 属性配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • java字符串替换排序实例

    java字符串替换排序实例

    这篇文章主要介绍了java字符串替换排序实例,有需要的朋友可以参考一下
    2014-01-01
  • JAVA Stack详细介绍和示例学习

    JAVA Stack详细介绍和示例学习

    JAVA Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。
    2013-11-11
  • MyBatis-Plus框架整合详细方法

    MyBatis-Plus框架整合详细方法

    MyBatis-Plus是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生这篇文章主要介绍了MyBatis-Plus框架整合,需要的朋友可以参考下
    2022-04-04
  • springboot的SpringPropertyAction事务属性源码解读

    springboot的SpringPropertyAction事务属性源码解读

    这篇文章主要介绍了springboot的SpringPropertyAction事务属性源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java超详细教你写一个学籍管理系统案例

    Java超详细教你写一个学籍管理系统案例

    这篇文章主要介绍了怎么用Java来写一个学籍管理系统,学籍管理主要涉及到学生信息的增删查改,本篇将详细的实现,感兴趣的朋友跟随文章往下看看吧
    2022-03-03
  • Java中ArrayList与顺序表的定义与实现方法

    Java中ArrayList与顺序表的定义与实现方法

    ArrayList是一个实现List接口的类,底层是动态类型顺序表,本质也就是数组,动态主要体现在它的扩容机制,下面这篇文章主要给大家介绍了关于Java中ArrayList与顺序表的定义与实现的相关资料,需要的朋友可以参考下
    2022-07-07
  • SpringBoot读取配置文件的四种方式

    SpringBoot读取配置文件的四种方式

    在 Spring Boot 中,application.yml 文件用于配置应用程序的属性,Spring Boot 默认会从 src/main/resources 目录下的 application.properties 或 application.yml 文件中读取配置,本文介绍了SpringBoot读取配置文件的四种方式,需要的朋友可以参考下
    2024-08-08
  • Java基于IDEA实现qq邮件发送小程序

    Java基于IDEA实现qq邮件发送小程序

    这篇文章主要介绍了Java基于IDEA实现qq邮件发送小程序功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • SpringBoot整合RabbitMQ实现消息确认机制

    SpringBoot整合RabbitMQ实现消息确认机制

    这篇文章主要介绍了SpringBoot整合RabbitMQ实现消息确认机制,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08

最新评论