开个线程Observer,不停地察看文件的修改时间属性,如果发现更新就通知主程序。

解决方案 »

  1.   

    对呀,我是每次都读文件,用下面的方法
        ResourceBundle resourceBundle = ResourceBundle.getBundle(
            "system");
        Enumeration enum = resourceBundle.getKeys();
        while (enum.hasMoreElements()) {
          String key = (String) enum.nextElement();
          resource.put(key, resourceBundle.getString(key));
        }
    但这种读到就是一个缓存的版本
      

  2.   

    properties文件的配置信息放到数据库中就可以了,如果你非要实际刷新的话
      

  3.   

    我配置文件中放的就是如何访问数据库:)
    当然还有一些别的配置信息,程序投入运行后是不常动的,但开发时经常要切换,
    用properties文件难道没办法刷新吗
      

  4.   

    String getValue (String key) {
        if (debug) {
          //reload file into resource
        }
        return resource.get (key);
      }
      

  5.   

    对,当文本文件读肯定没这个问题,但用下面这个方法就有问题
        ResourceBundle resourceBundle = ResourceBundle.getBundle(
            "system");
    我觉得这个文件跟class文件一样,读过之后JVM可能就缓存了,求高人一解
      

  6.   

    楼主为什么要用
    ResourceBundle resourceBundle = ResourceBundle.getBundle("system");读啊,这样有什么作用吗?没用过还请指教。
    我是按如下方法读的,没有问题。
     //Loading Setting Parameters
        Properties config = null;
              try{
                InputStream in = Class.forName("xmldocio.InputXmlDoc").getClassLoader().getResourceAsStream("xmldocio/SystemPara.properties");
                if(in != null){
                  config = new Properties();
                  config.load(in);
                  strServerName = config.getProperty("ServerName").trim();
                  strDatabaseName = config.getProperty("DatabaseName").trim();
                  strPort = config.getProperty("Port").trim();
                  strUserName = config.getProperty("UserName").trim();
                  strPassword = config.getProperty("Password").trim();
                }
              }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(this,"配置文件出错,请检查!","Error",1);
              }