原有配置文件,user.propertiesip=10.1.1.0
username=user1
pwd=8888程序读取的时候都是取关键字:String ip = imp.getProperty("ip");
......现在的情况是:
我再配置文件中增加了一些key.我的程序能够动态的得到这些key,并取得key的值吗?谢谢!

解决方案 »

  1.   

    能,取值的时候重新load一遍user.properties
      

  2.   

    FileInputStream fin = new FileInputStream(propertiesFilePath);
    prop.load(fin);String ip = imp.getProperty("ip"); 
      

  3.   

    如果没有重新reload的话,以前的可以取到,新的不能取到一般在容器里的话,资源文件的重新reload都是自动的,不用程序手动reload
      

  4.   

    properties 类 提供的setPropertes(String key, String value),
    所set到里面的值事实上是没有写到属性文件里,也就是说,当 当次程序后,
    在下一次,再读去刚才set进去的值,拿到的就是null.如果要真正的写进去,可能要用到文件流去完成.
    希望下面代码符合你的要求package cn.jeffsr.csdn.test;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.RandomAccessFile;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;public class UseProperties { /**
     *  方法功能描述
     *  @param args 该变量代表什么
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
    InputStream in = new FileInputStream("src/db.properties");
    Properties pro = new Properties();

    /*Map<String,String> map = new HashMap<String ,String>();
    map.put("a name","a value");
    map.put("b name","b value");
    map.put("c name","c value");
    setProperties("src/db.properties",map);*/

    setProperties("src/db.properties","path","src/db.properties");

    pro.load(in);
    System.out.println(pro.getProperty("path"));
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    public static void setProperties(String path,String key ,String value) 
    throws FileNotFoundException,IOException{

    Map<String,String> map = new HashMap<String,String>();
    map.put(key, value);
    setProperties(path,map);
    }

    public static void setProperties(String path,Map map)
    throws FileNotFoundException,IOException{

    if(map.isEmpty())return;
    Set keySet = map.keySet();
    RandomAccessFile rand = new RandomAccessFile(path,"rw");
    long point = rand.length();
    for(Iterator i = keySet.iterator() ; i.hasNext() ; ) {
    String key = (String)i.next();
    rand.seek(point);
    rand.writeBytes("\r\n" + key + "=" + map.get(key));
    point = rand.length();
    }
    rand.close();
    }
    }ps:上面只是基本的实现插入新记录,可能还有挺多不足.关于您的意见