[英]Reading Properties file every time in the execution in Java
给定我要部署的“ war”文件的以下目录结构,我必须从“ ReadProp.java”类中读取属性文件“ MyProperty.properties”。
MyApp.war
| ----MyProps
| |--MyProperty.properties
|---WEB-INF |
|--classes
|---ReadProp.java
我将在“ Sun门户服务器”中部署此“ war”文件。 但是由于需求规范,我不应该更改任何此目录结构。
我正在通过以下方式读取此文件
String path = servletContext.getRealPath("/MyProps/MyProperty.properties"); System.out.println("path: " + path);
Properties prop = new Properties();
try {
prop.load(new FileInputStream(path));
);
} catch (Exception e) {
e.printStackTrace();
}
String name= prop.getProperty("name");
一切正常。 但是问题是,如果在加载应用程序后更改属性文件,更改不会反映出来。
我可以随时更改属性文件的操作方法如果我希望更改应反映出来。 我的意思是应用程序应该每次在exexecutio中加载属性文件
除非您启动应用服务器,否则您将看不到任何更改。
更好的选择是将.properties文件放在/ WEB-INF / classes文件夹中,并使用getResourceAsStream()
从CLASSPATH中读取它。
您没有说要在哪里阅读代码。 您可能必须实现Timer
任务才能定期唤醒并重新加载.properties文件。
如果您使用的是JDK 7,也可以尝试使用WatchService
:
您需要为该示例链接使用java 7 WatchService
我得到了答案:
String path = servletContext.getRealPath("/MyProps/MyProperty.properties");
System.out.println("path: " + path);
Properties prop = new Properties();
try {
File f = new File(path);
FileInputStream fis = new FileInputStream(f);
prop.load(fis);
}
catch (Exception e) {
e.printStackTrace();
}
更新的方法是:
Path path;
try {
path = Paths.get("MyProperty.properties");
if (Files.exists(path)) {
props = new Properties();
props.load(Files.newInputStream(path));
}
} catch (IOException e) {
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.