Fork me on GitHub

Java操作属性文件之工具类

  最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教...

package com.hsuchan.business.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.apache.log4j.Logger;

/**
 * Java属性文件操作工具类
 * <p>由于每个人的需求不一样,所以本工具只提供常用的功能(包括根据键名获取键值,根据键名修改键值),
 * 如果不满足,自个完全可以修改,在本工具类中,我们假设属性文件已经存在,并且文件中已经存在我们要操作的key</p>
 * @author HsuChan
 * @version v1.0.0 2015-06-19
 */
public class PropertiesUtil {
    private static Properties properties= new Properties();
    private static Logger logger = Logger.getLogger(PropertiesUtil.class);
    /**测试用 属性文件名*/
    private static final String PROPERTIES_FILE_PATH="/config.properties";
    /**测试用 操作的键名*/
    private static final String KEY_NAME="content";
    
    
    /**
     * 初始化properties
     * @param path 属性文件路径,如:/config.properties
     */
    private static void initProperties(String path) {
        
        try {
            InputStream ipsm = PropertiesUtil.class.getResourceAsStream(path);
            properties.load(ipsm);
            ipsm.close();
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    }

    /**
     * 根据键名key获取属性文件中对应的键值
     * @param path 属性文件路径,如:/config.properties
     * @param key 属性文件 键名
     * @return
     */
    public static String getValueByKey(String path,String key){
        //如果properties为空,则初始化
        if(properties.isEmpty())
            initProperties(path);
        return properties.getProperty(key);
    }
    
    /**
     * 通过键名key修改其对应的值为value
     * @param path 属性文件路径,如:/config.properties
     * @param key  属性文件 键名
     * @param value 属性文件 键值
     */
    public static void modifyValueByKey(String path,String key,String value) {
        //如果properties为空,则初始化
        if(properties.isEmpty())
            initProperties(path);
        //修改值
        properties.setProperty(key, value);
       
        try {
            //获取文件路径
            URL url = PropertiesUtil.class.getResource(path);
            FileOutputStream fos = new FileOutputStream(new File(url.toURI()));
            //保存到文件
            properties.store(fos, "modify the value of key");
            fos.close();
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
    }
    
  
    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        //取值示例
        System.out.println("修改前:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME));
        //修改示例
        modifyValueByKey(PROPERTIES_FILE_PATH,KEY_NAME,"3333311s");
        //取值示例
        System.out.println("修改后:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME));
        
    }
}

转载请注明出处,谢谢。

posted @ 2015-06-19 17:29  南田玉彦  阅读(1277)  评论(0编辑  收藏  举报