Java 操作 properties 文件

来源:互联网 发布:淘宝私人定制怎么进 编辑:程序博客网 时间:2024/06/04 01:02
Java直接操作properties 文件package com.iwco.util;import java.io.BufferedInputStream;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.Properties;public class SetSystemProperty { //属性文件的路径    static String profilepath="mail.properties";    /**    * 采用静态方法    */    private static Properties props = new Properties();    static {        try {            props.load(new FileInputStream(profilepath));        } catch (FileNotFoundException e) {            e.printStackTrace();            System.exit(-1);        } catch (IOException e) {                  System.exit(-1);        }    }    /**    * 读取属性文件中相应键的值    * @param key    *            主键    * @return String    */    public static String getKeyValue(String key) {        return props.getProperty(key);    }    /**    * 根据主键key读取主键的值value    * @param filePath 属性文件路径    * @param key 键名    */    public static String readValue(String filePath, String key) {        Properties props = new Properties();        try {            InputStream in = new BufferedInputStream(new FileInputStream(                    filePath));            props.load(in);            String value = props.getProperty(key);            System.out.println(key +"键的值是:"+ value);            return value;        } catch (Exception e) {            e.printStackTrace();            return null;        }    }      /**    * 更新(或插入)一对properties信息(主键及其键值)    * 如果该主键已经存在,更新该主键的值;    * 如果该主键不存在,则插件一对键值。    * @param keyname 键名    * @param keyvalue 键值    */    public static void writeProperties(String keyname,String keyvalue) {              try {            // 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。            OutputStream fos = new FileOutputStream(profilepath);            props.setProperty(keyname, keyvalue);            // 以适合使用 load 方法加载到 Properties 表中的格式,            // 将此 Properties 表中的属性列表(键和元素对)写入输出流            props.store(fos, "Update '" + keyname + "' value");        } catch (IOException e) {            System.err.println("属性文件更新错误");        }    }    /**    * 更新properties文件的键值对    * 如果该主键已经存在,更新该主键的值;    * 如果该主键不存在,则插件一对键值。    * @param keyname 键名    * @param keyvalue 键值    */    public static void updateProperties(String keyname,String keyvalue) {        try {            props.load(new FileInputStream(profilepath));            // 调用 Hashtable 的方法 put,使用 getProperty 方法提供并行性。            // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。            OutputStream fos = new FileOutputStream(profilepath);                      props.setProperty(keyname, keyvalue);            // 以适合使用 load 方法加载到 Properties 表中的格式,            // 将此 Properties 表中的属性列表(键和元素对)写入输出流            props.store(fos, "Update '" + keyname + "' value");        } catch (IOException e) {            System.err.println("属性文件更新错误");        }    }    //测试代码    public static void main(String[] args) {        readValue("mail.properties", "jdbc_mysql");        writeProperties("jdbc_mysql", "127.0.0.1");              writeProperties("username", "root");              writeProperties("password", "123");          updateProperties("password", "456");          System.out.println("操作完成");    }} 

0 0
原创粉丝点击