Java关于Properties用法(二)——替换配置文件中的参数

上一章讲了配置文件的基本用法,虽然上一章已经可以解决一些需求,但还不些不足之处。假如,配置文件里面的字符串有一部分需要经常变动,另外一些不需要,上一章的方法就不方便了,所以这章主要讲如何在配置文件中使用参数,然后替换字符串里面的参数值。



一、使用类MessageFormat替换配置文件中的参数

MessageFormat 提供了以与语言无关方式生成连接消息的方式。使用此方法构造向终端用户显示的消息。

MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置。

注:MessageFormat 不同于其他 Format 类,因为 MessageFormat 对象是用其构造方法之一创建的(而不是使用 getInstance 样式的工厂方法创建的)。工厂方法不是必需的,因为 MessageFormat 本身不实现特定于语言环境的行为。特定于语言环境的行为是由所提供的模式和用于已插入参数的子格式来定义的。

简单来说MessageFormat是一个字符串格式化类,主要使用它的format()方法来替换一个字符串的参数。

1、配置文件如下:

2、代码如下:

package test.email;

import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Properties;

public class Test {

    public static void main(String[] args) throws IOException {

        Properties prop = new Properties();
        InputStream in = Test.class.getClassLoader().getResourceAsStream(
                "emailContent.properties");

        prop.load(in);
        //参数
        String params[]={"‘张三’ ","13488888888","70.8"};
        //从配置文件中读取模板字符串替换
        String msg=MessageFormat.format(prop.getProperty("text"),params);
        System.out.println("模板字符串:"+prop);
        System.out.println("替换后的字符串:"+msg);

    }

}

执行结果是:

模板字符串:{text=尊敬的{0}用户你好,您的手机号码{1}已经欠费{2},请尽快充值}
替换后的字符串:尊敬的‘张三’ 用户你好,您的手机号码13488888888已经欠费70.8,请尽快充值

注意:配置文件中的占位符{}从0开始,与参数数组下标一一对应!!!

二、MessageFormt的模式

MessageFormat用来格式化一个消息,通常是一个字符串,比如:

String str = "I‘m not a {0}, age is {1,number,short}", height is {2,number,#.#};

而MessageFormat可以格式化这样的消息,然后将格式化后的字符串插入到模式中的适当位置,比如:

将str中的{0}用"pig"替换,{1,number,short}用数字8替换,{2,number,#.#}用数字1.2替换。

那么最终用户得到的是一个格式化好的字符串"I‘m not a pig, age is 8, height is 1.2"。

MessageFormat本身与语言环境无关,而与用户提供给MessageFormat的模式和用于已插入参数的子格式模式有关,以生成适用于不同语言环境的消息。

MessageFormat模式(主要部分):

FormatElement:
         { ArgumentIndex }
         { ArgumentIndex , FormatType }
         { ArgumentIndex , FormatType , FormatStyle }

FormatType:
         number

date

time

choice(需要使用ChoiceFormat)

FormatStyle:
         short
         medium
         long
         full
         integer
         currency
         percent
SubformatPattern(子模式)

还以str为例,在这个字符串中:

1、{0}和{1,number,short}和{2,number,#.#};都属于FormatElement,0,1,2是ArgumentIndex。

2、{1,number,short}里面的number属于FormatType,short则属于FormatStyle

3、{1,number,#.#}里面的#.#就属于子格式模式。

指定FormatTypeFormatStyle是为了生成日期格式的值、不同精度的数字、百分比类型等等

时间: 2024-10-17 19:32:29

Java关于Properties用法(二)——替换配置文件中的参数的相关文章

java.util.Properties 读取配置文件中的参数

用法 getProperty方法的返回值是String类型. java.util.Properties 读取配置文件中的参数 //读取配置文件 FileInputStream inStream = null; try { inStream = new FileInputStream("/fetchedfile/redis.conf"); Properties prop = new Properties(); prop.load(inStream); Field field; Strin

Java关于Properties用法的总结

最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入txt文件.因为文件的读写路径可能需要随时改动,所以写死或者写成静态变量都不方便,就考虑使用配置文件,这里总结些配置文件用法. 一.Java Properties类 1.Java中有个比较重要的的类Properties(java.util.Properties),是代表一个持久的一套详细属性,属性可以被保存到一个流或从流中加载的类.以下是关于属性的要点: 属性列表中每个键及其对应值是一个字符串. 一个属性列表可包

java学习----JDBC---将数据库连接信息放置配置文件中

目录如下: jdbcConnection.java: package jdbc01; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.util.Properties; import org.junit.Test; /** * 将jdbc连接解耦,放入配置文件中 * @author sawshaw * */ public class jdbcConnection{

jdbc基础 (二) 从配置文件中读取连接数据库

上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接获取.释放资源的代码都是相同的,为了提高代码的复用性,我们可以写一个工具类,将数据库驱动加载.获取连接.资源释放的代码封装起来.同时,为了提高工具类的灵活性,可以将数据库的驱动.url.用户名.密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中读取所要连接数据库的信息.当需要更改连接的数据库时,只需要更改配置文件即可,而不必改写工具类的代码. 下面

spring 注入java.util.Properties 属性两种xml中的配置练习

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util

监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化

监听tomcat服务器启动/关闭很简单(2步): 1. 建立一个类实现ServletContextListener接口,重写其中的方法(contextDestroyed和contextInitialized). package action; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class SystemListener implements Se

【SpringBoot】【3】读取配置文件中的参数并配置给全局使用

前言: 读取配置文件参数的方法:@Value("${xx}")注解.但是@Value不能为static变量赋值,而且很多时候我们需要将参数放在一个地方统一管理,而不是每个类都赋值一次. 正文: 注意:一定要给类加上@Component 注解 application.xml test: app_id: 12345 app_secret: 66666 is_active: true 统一读取配置文件参数: package com.example.demo.config; import or

servlet中获取配置文件中的参数.

web.xml (添加init-param) 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:s

java对properties配置文件的读写操作

1.1.  对properties配置文件的读取 1.1.1.  要读取的文件 配置文件key和value之间用冒号[:]和等于号[=]都是可以的. Test.properties name:\u5F20\u4E09 password:\u5BC6\u7801 age:22 1.1.2.  读取的程序代码 PropertiesTest.java /** * 读取配置文件 * @throws IOException */ @Test public void read() throws IOExce