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

    转载请注明出处,谢谢。

  • 相关阅读:
    使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API(四)
    使用 ASP.NET Core MVC 创建 Web API(三)
    使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API(一)
    学习ASP.NET Core Razor 编程系列十九——分页
    学习ASP.NET Core Razor 编程系列十八——并发解决方案
    一个屌丝程序猿的人生(九十八)
    一个屌丝程序猿的人生(九十七)
    一个屌丝程序猿的人生(九十五)
  • 原文地址:https://www.cnblogs.com/hsuchan/p/4589331.html
Copyright © 2011-2022 走看看