zoukankan      html  css  js  c++  java
  • 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));
            
        }
    }

    转载请注明出处,谢谢。

  • 相关阅读:
    知道回答C语言中如何返回值为数组
    指向字符串的指针和char类型的数组
    vba--将excel单元格格式改为常规格式
    vba--分拆工作薄
    VBA-合并多个工作簿
    使用sqlcel导入数据时出现“a column named '***' already belongs to this datatable”问题的解决办法
    使用Sqlcel操作数据库整理数据视频
    SQLCel匹配原数据信息,更新原数据所有信息并插入新数据的过程
    计算订单签收率的sql查询思路与过程(涉及百分比和四舍五入)
    sqlCel查询一个表中部分字段的数据后插入到另一个表中
  • 原文地址:https://www.cnblogs.com/hsuchan/p/4589331.html
Copyright © 2011-2022 走看看