• 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));
            
        }
    }

    转载请注明出处,谢谢。

  • 相关阅读:
    网站页面性能优化的 34条黄金守则 (雅虎团队经验)
    进程调度算法小结
    玩转TCP连接
    数据包在网络中的流转
    浅入理解JVM虚拟机
    Leecode no.47 全排列 II
    Leecode no.143 重排链表
    关于我用设计模式对公司代码重构的这件事
    进程间通信方式小结
    Leecode no.82 删除排序链表中的重复元素 II
  • 原文地址:https://www.cnblogs.com/hsuchan/p/4589331.html
Copyright © 2020-2023  润新知