使用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”实现的,现在如果我们删除该检查,它肯定会每次都加载更新的文件但会降低性能。我想要另一种方式。
希望我解释了我的问题。 提前谢谢。
答案 0 :(得分:-1)
Java有一个文件观察器服务。这是一个API。您可以“监听”文件和目录中的更改。因此,您可以侦听对属性文件或属性文件所在目录的更改。 Oracle OTN网站上的 Java Tutorials 在观察者服务上有一个section。
祝你好运,
阿维。