Java属性类

时间:2018-01-23 07:26:10

标签: java tomcat properties

使用java 8,tomcat 8

嗨,我正在使用属性加载文件,但是在加载之前我有一个检查,如果已加载(非空),则返回相同的属性对象。这是一个正常的情况,但我想知道是否有任何方式,如果目标文件中发生任何更改,应调用一些触发器并刷新所有属性对象。这是我的代码。

public static String loadConnectionFile(String keyname) {
              String message = "";

              getMessageFromConnectionFile();
               if (propertiesForConnection.containsKey(keyname))
                message = propertiesForConnection.getProperty(keyname);

               return message;
            }

public static synchronized void getMessageFromConnectionFile() {
              if (propertiesForConnection == null) {
               FileInputStream fileInput = null;
               try {
                File file = new File(Constants.GET_CONNECTION_FILE_PATH);
                fileInput = new FileInputStream(file);
                Reader reader = new InputStreamReader(fileInput, "UTF-8");
                propertiesForConnection = new Properties();
                propertiesForConnection.load(reader);
               } catch (Exception e) {
                Utilities.printErrorLog(Utilities.convertStackTraceToString(e), logger);
               } finally {
                try {
                 fileInput.close();
                } catch (Exception e) {
                 Utilities.printErrorLog(Utilities.convertStackTraceToString(e), logger);
                }
               }
              }
             }

loadConnectionFile方法首先执行并调用getMessageFromConnectionFile,其中检查是为“null”实现的,现在如果我们删除该检查,它肯定会每次都加载更新的文件但会降低性能。我想要另一种方式。

希望我解释了我的问题。 提前谢谢。

1 个答案:

答案 0 :(得分:-1)

Java有一个文件观察器服务。这是一个API。您可以“监听”文件和目录中的更改。因此,您可以侦听对属性文件或属性文件所在目录的更改。 Oracle OTN网站上的 Java Tutorials 在观察者服务上有一个section

祝你好运,

阿维。