http://breezylee.iteye.com/blog/1340868

对Java配置文件Properties的读取、写入与更新操作
注:当前项目路径是
String filepath=System.getProperty("user.dir");

对下面的程序很有用...

/**
* 实现对Java配置文件Properties的读取、写入与更新操作
*/
package test;

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;

/**
* @author
* @version
*/
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 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", "MAIL_SERVER_PASSWORD");
        writeProperties("MAIL_SERVER_INCOMING", "327@qq.com");       
        System.out.println("操作完成");
    }
}

另一个例子:此处的文件common.properties和 Config类都在class src下面

  1. public static String getValue(String key) {
  2. try {
  3. InputStream inputStream = Config.class.getClassLoader().getResourceAsStream("common.properties");
  4. property.load(inputStream);
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. }
  8. return (String) property.get(key);
  9. }

对Java配置文件Properties的读取、写入与更新操作的更多相关文章

  1. Java配置文件Properties的读取、写入与更新操作

    /** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...

  2. 实现对Java配置文件Properties的读取、写入与更新操作

    /** * 实现对Java配置文件Properties的读取.写入与更新操作 */ package test; import java.io.BufferedInputStream; import j ...

  3. 读取java配置文件properties

    java项目里很多参数都是写在配置文件properties上,如果需要读取的话,可以使用jdk里提供的Properties类进行处理. 具体写法如下: public class PropertiesC ...

  4. 【Properties文件】Java使用Properties来读取配置文件

    配置文件位置及内容 执行结果 程序代码 package Utils.ConfigFile;   import java.io.BufferedInputStream; import java.io.B ...

  5. 关于Java配置文件properties的学习

    在Java早期的开发中,常用*.properties文件存储一些配置信息.其文件中的信息主要是以key=value的方式进行存储,在早期受到广泛的应用.而后随着xml使用的广泛,其位置渐渐被取代,不过 ...

  6. Java的properties文件读取和属性修改

    package Test; import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileO ...

  7. java配置文件properties,yml,一般文件

    JAVA编写配置文件的几种方式: JAVA配置文件,一般都放在resource目录下,无论是下面提到的properties.yml还是普通的txt等文件. 在打成jar包之后,只需要jar包程序就可运 ...

  8. Java之properties文件读取

    1.工程结构 2.ConfigFileTest.java package com.configfile; import java.io.IOException; import java.io.Inpu ...

  9. Java中properties可以读取,但是里面的数据读取不到

    今天配置一个项目jdbc.properties这个文件里面的键值总是读取不到,刚开始以为是文件没有读取到,但是测试是读取到的,再排查键值是不是写错了, 后来发现键值是对的,这就很奇怪了 比较是没有任何 ...

随机推荐

  1. Java实现Redis持久化到数据库的关键方法

    import java.util.Date; import java.util.Iterator; import java.util.Set;   import redis.clients.jedis ...

  2. LeetCode OJ 222. Count Complete Tree Nodes

    Total Accepted: 32628 Total Submissions: 129569 Difficulty: Medium Given a complete binary tree, cou ...

  3. Light OJ 1136

    Division by 3. 发现一些规律: 一个数的数字和相加能被三整除,那么这个数也能被3整除.(1) 然后可以发现: 连续三个整数并排在一起组成的数的数字和必然能被3整除.(2) 最后通过(2) ...

  4. flashbuilder mx组件 MenuBar

    来源:http://www.cuplayer.com/player/PlayerCode/Flex/2013/0118661.html <fx:Script> <![CDATA[ i ...

  5. Adobe Flash CC 2014 下载及破解

    来源 :http://prodesigntools.com/adobe-cc-2014-direct-download-links.html 地址:http://trials3.adobe.com/A ...

  6. Git中的merge命令实现中出现问题及其解决

    Git中的merge命令实现和工作方式 2015年8月17日星期一 丹丹 git代码在合并两个分支的时候总是会出现一下的错误提示,不能正常的完成合并分支,错误提示如图所示: 但是在其他的终端是可以完成 ...

  7. java regex possissive relunctant

    Java正则表达中Greedy Reluctant Possessive 的区别 分类: java 2015-01-16 00:28 1588人阅读 评论(9) 收藏 举报 正则表达式Java 目录( ...

  8. myeclipse 调试JSP页面

    http://jingyan.baidu.com/article/636f38bb1ef1aad6b9461048.html

  9. get 和 post请求的区别

    (1)GET请求用于获取信息,从Client的角度看,不会改变资源状态,并且多次对同一URL的多个请求应该返回相同的结果.        GET请求的参数会显示在URL中,即放置在HTTP协议头中(所 ...

  10. Exams

    Exams time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...