`

对Java配置文件Properties的读取、写入与更新操作

阅读更多

对Java配置文件Properties的读取、写入与更新操作
注:当前项目路径是
String filepath=System.getProperty("user.dir");

对下面的程序很有用...

/**
* 实现对Java配置文件Properties的读取、写入与更新操作
*/
package test;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;


/**
* @author
* @version
*/
public class SetSystemProperty {
    //属性文件的路径
    static String profilepath="mail.properties";
    /**
    * 采用静态方法
    */
    private static Properties props = new Properties();
    static {
        try {
            props.load(new FileInputStream(profilepath));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.exit(-1);
        } catch (IOException e) {      
            System.exit(-1);
        }
    }

    /**
    * 读取属性文件中相应键的值
    * @param key
    *            主键
    * @return String
    */
    public static String getKeyValue(String key) {
        return props.getProperty(key);
    }

    /**
    * 根据主键key读取主键的值value
    * @param filePath 属性文件路径
    * @param key 键名
    */
    public static String readValue(String filePath, String key) {
        Properties props = new Properties();
        try {
            InputStream in = new BufferedInputStream(new FileInputStream(
                    filePath));
            props.load(in);
            String value = props.getProperty(key);
            System.out.println(key +"键的值是:"+ value);
            return value;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
  
    /**
    * 更新(或插入)一对properties信息(主键及其键值)
    * 如果该主键已经存在,更新该主键的值;
    * 如果该主键不存在,则插件一对键值。
    * @param keyname 键名
    * @param keyvalue 键值
    */
    public static void writeProperties(String keyname,String keyvalue) {      
        try {
            // 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。
            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
            OutputStream fos = new FileOutputStream(profilepath);
            props.setProperty(keyname, keyvalue);
            // 以适合使用 load 方法加载到 Properties 表中的格式,
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
            props.store(fos, "Update '" + keyname + "' value");
        } catch (IOException e) {
            System.err.println("属性文件更新错误");
        }
    }

    /**
    * 更新properties文件的键值对
    * 如果该主键已经存在,更新该主键的值;
    * 如果该主键不存在,则插件一对键值。
    * @param keyname 键名
    * @param keyvalue 键值
    */
    public void updateProperties(String keyname,String keyvalue) {
        try {
            props.load(new FileInputStream(profilepath));
            // 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。
            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
            OutputStream fos = new FileOutputStream(profilepath);          
            props.setProperty(keyname, keyvalue);
            // 以适合使用 load 方法加载到 Properties 表中的格式,
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
            props.store(fos, "Update '" + keyname + "' value");
        } catch (IOException e) {
            System.err.println("属性文件更新错误");
        }
    }
    //测试代码
    public static void main(String[] args) {
        readValue("mail.properties", "MAIL_SERVER_PASSWORD");
        writeProperties("MAIL_SERVER_INCOMING", "327@qq.com");      
        System.out.println("操作完成");
    }
}

 

另一个例子:此处的文件common.properties和 Config类都在class src下面

public static String getValue(String key) {
		try {
			InputStream inputStream = Config.class.getClassLoader().getResourceAsStream("common.properties");
			property.load(inputStream);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return (String) property.get(key);
	}
 

 

分享到:
评论

相关推荐

    Java Properties 解决中文乱码和顺序读写.docx

    ava中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去...

    Java读取Properties文件的六种方法.txt

    很全面 很有用。。。里面有对Properties文件进行读取,写入的操作,达到六种方法。。。

    java 读取WEB-INF下文件夹中的properties文件

    非常实用的读取配置文件的小工具,专门读取WEB-INF下文件夹中的properties文件,代码简洁、亲测没有问题,适用范围广,任何类中都可调用,传入Key及可得到Value

    java中读写Properties属性文件公用方法详解

    在项目开发中我们会将很多环境特定的变量定义到一个配置文件中,比如properties文件,把数据库的用户名和密码存放到此属性...下面这篇文章就主要介绍了java中读写Properties属性文件公用方法,需要的朋友可以参考借鉴。

    Java加载properties文件实现方式详解

    主要介绍了Java加载properties文件实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    properties:Go的Java属性扫描器

    properties是用于读取和写入属性文件的Go库。 它支持从多个文件或URL进行读取,并将${key}类的表达式的Spring样式递归属性扩展为它们的相应值。 值表达式可以引用${key}其他键,也可以引用${USER}环境变量。 文件名...

    JAVA大作业-西电-西宝高速公路客运活动仿真

    部分车辆限制以配置文件形式写入config.properties;ConfigSetting类用来图形化修改配置文件;Constant类定义系统大多数通用常量,可以读取配置文件设定部分静态变量的值,其他类采用静态导入的方式使用;...

    java 面试题 总结

    Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    超级有影响力霸气的Java面试题大全文档

     Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    TinyConfiguration:TinyConfiguration是一个简单轻巧的库,用于管理配置文件(JSON,XML,CSV和YAML)

    特征您可以使用TinyConfiguration进行的一些操作: 读取,写入和删除自定义配置文件(甚至异步) 轻松搜索和检索值使用Lambda函数对属性值执行验证将配置导出为JSON , XML , YAML和CSV快速开始基础知识import org....

    docker-minecraft-server:《我的世界》服务器

    环境变量对 Docker 还是很友好的,但是反编译 minecraft-server-*.jar 发现这货根本没有从环境变量中读取配置 (getenv,getProperties),只能修改配置文件。 参考文章 配置文件详解(注意对应版本) 其它关于如何搭建...

    springmybatis

    5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis...

    POJOGenerator v1.3.3 Install(可视化POJO代码生成器最终版)

    1、先将压缩档解压到任意文件夹,必须保留配置文件cmsdk4j.cfg.xml和generator .cfg.xml与可执行文件POJOGenerator.exe在同一目录,否则无法运行。 2、可以预先在配置档cmsdk4j.cfg.xml中设定您的数据库服务器配置...

    免费云存储工具类——七牛云(更改配置信息,直接使用)

    云存储工具类——七牛云 第一步 导入相关依赖: ... qiniu-java-sdk ...secretKey:你的sk在这里插入图片描述把这些配置信息写在一个小配置文件(XXX.properties)中,供工具类读取 dns=你的dns accessKey=你的ak se

    ssh(structs,spring,hibernate)框架中的上传下载

     由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中:  代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    -- redis 配置,也可以把配置挪到properties配置文件中,再读取 --> <constructor-arg index="1" value="127.0.0.1" name="host" type="java.lang.String"/> <!-- 这种 arguments 构造的方式,...

    Spark_Kafka_Elastic

    用户活动监视器 介绍 该项目在单个网页上包含一个简单的用户活动监视器。 对于用户在网页上进行的每个鼠标移动... 启动动物园管理员bin/zookeeper-server-start.sh 配置/zookeeper.properties 启动Kafka服务器bin/ka

    ZendFramework中文文档

    7.13.1. 从 1.0.x 到 1.5.0 或更新的版本的移植 7.13.2. 从 0.9.3 到 1.0.0RC1 或更新的版本的移植 7.13.3. 从 0.9.2 移植到 0.9.3 或更新的版本 7.13.4. 从 0.6.0 移植到 0.8.0 或更新的版本 7.13.5. 从 0.2.0 ...

Global site tag (gtag.js) - Google Analytics