• Java操作properties文件


    一、琅序

      java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。

    ------------------------------------------------------ 
    Java.util 中,Properties类继承自 Hashtable
    1. getProperty ( String  key) ,   用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
    2. load ( InputStream  inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对,以供 getProperty ( String  key) 搜索。
    3. setProperty ( String  key, String  value) ,调用 Hashtable 的方法 put方法。它通过调用基类的put方法来设置键 - 值对。 
    4. store ( OutputStream  out, String  comments) ,以适合使用 load 方法加载到 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。
    5. clear () ,清除所有装载的键 - 值对。该方法在基类中提供。
    ------------------------------------------------------

    二、操作properties文件的java方法 

    package com.hibernate.utils.util1;
    
    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.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    
    public final class PropertiesUtil {
    
        /**
         * 读取某个属性的值
         */
        public static String getProperty(String fileName, String propertyName) {
            Properties prop = new Properties();
            InputStream in = null;
            try {
                in = new FileInputStream(getFilePath() + fileName);
                prop.load(in);
                String propertyValue = prop.getProperty(propertyName);
                return propertyValue;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            } finally {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * 增加或修改属性
         */
        public static void saveOrUpdateProperty(String fileName, String propertyName, String propertyValue) {
            Map<String, String> toSaveMap = getProperties(fileName);
            toSaveMap.put(propertyName, propertyValue);// 添加或更新属性
            Properties prop = new Properties();
            OutputStream out = null;
            try {
                out = new FileOutputStream(getFilePath() + fileName);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            prop.putAll(toSaveMap);
            try {
                prop.store(out, "come from add Or update action");// 更新properties文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 删除属性
         */
        public static void deleteProperty(String fileName, String propertyName) {
            Map<String, String> toSaveMap = getProperties(fileName);
            toSaveMap.remove(propertyName);// 移除属性
            Properties prop = new Properties();
            OutputStream out = null;
            try {
                out = new FileOutputStream(getFilePath() + fileName);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            prop.putAll(toSaveMap);
            try {
                prop.store(out, "");// 更新properties文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取类所在的绝对路径
         */
        public static String getFilePath() {
            return PropertiesUtil.class.getClass().getResource("/").getPath();
        }
    
        /**
         * 读取properties文件的所有属性
         */
        public static Map<String, String> getProperties(String fileName) {
            Properties prop = new Properties();
            try {
                InputStream in = new FileInputStream(getFilePath() + fileName);
                prop.load(in);// 加载属性值
            } catch (IOException e) {
                e.printStackTrace();
            }
            Map<String, String> toSaveMap = new HashMap<String, String>();
            Set<Object> keys = prop.keySet();
            Iterator<Object> it = keys.iterator();
            while (it.hasNext()) {
                String key = (String) it.next();
                String value = (String) prop.get(key);
                toSaveMap.put(key, value);
            }
            return toSaveMap;
        }
    
    }

    ----------------------------------------致青春----------------------------------------

  • 相关阅读:
    react 和 vue 的优缺点总结
    解决js小数求和出现多位小数问题
    同步循环发请求用promise
    hook中ref使用
    只能输入数字和保留三位的小树
    react添加右键点击事件
    redux
    深拷贝和浅拷贝区别及概念
    pointer-events的css属性。使用该属性可以决定是否能穿透绝对定位元素去触发下面元素的某些行为
    React 使用link在url添加参数(url中不可见)
  • 原文地址:https://www.cnblogs.com/maxiaolang/p/4589237.html
Copyright © 2020-2023  润新知