在java中从属性文件动态加载
我有一个config.properties文件,名称如下: 姓名=约翰、简 然后我有一个类访问该文件并加载名称。我还有另一个类,它从某处获取一个名称,如果该名称在config.properties中,则会打印“SUCCESS”。问题是,如果我向config.properties添加名称,我必须再次运行该程序,它不会动态加载。有什么替代方案在java中从属性文件动态加载,java,apache-commons-config,Java,Apache Commons Config,我有一个config.properties文件,名称如下: 姓名=约翰、简 然后我有一个类访问该文件并加载名称。我还有另一个类,它从某处获取一个名称,如果该名称在config.properties中,则会打印“SUCCESS”。问题是,如果我向config.properties添加名称,我必须再次运行该程序,它不会动态加载。有什么替代方案 public class PropertiesFile { private static final char OPENFILES_CONFIG_
public class PropertiesFile {
private static final char OPENFILES_CONFIG_DELIMITER = ',';
private static final String OPENFILES_CONFIG = "config.properties";
private static org.apache.commons.configuration2.Configuration config;
static {
try {
Parameters params = new Parameters();
FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
.configure(params.properties()
.setFileName(OPENFILES_CONFIG)
.setListDelimiterHandler(new DefaultListDelimiterHandler(OPENFILES_CONFIG_DELIMITER)));
config = builder.getConfiguration(); }
catch (ConfigurationException cE) {
//...
}
}
public static Set<String> load() {
String[] thingsToExecute = config.getStringArray("names");
return new HashSet<String>(Arrays.asList(thingsToExecute));
}
}
public class OpenFiles {
private static Set<String> toExecute;
public static void main(String[] args) {
updateToExecute();
connect();
}
private static void connect() {
//code that obatins JSONObject
if (obj4.has("name")) {
String personName = obj4.get("name").toString();
updateToExecute();
if (toExecute.contains(personName)) {
System.out.println("SUCCESS");
} else {
System.out.println(personName+"is not in the list");
}
}
}
private static void updateToExecute() {
toExecute = PropertiesFile.load();
}
}
公共类属性文件{
私有静态最终字符OPENFILES_CONFIG_DELIMITER=',';
私有静态最终字符串OPENFILES\u CONFIG=“CONFIG.properties”;
私有静态org.apache.commons.configuration2.Configuration配置;
静止的{
试一试{
Parameters params=新参数();
FileBasedConfiguration builder=新的FileBasedConfiguration builder(PropertiesConfiguration.class)
.configure(params.properties()
.setFileName(OPENFILES\u CONFIG)
.setListDelimiterHandler(新的DefaultListDelimiterHandler(OPENFILES\u CONFIG\u DELIMITER));
config=builder.getConfiguration();}
捕获(配置异常){
//...
}
}
公共静态设置负载(){
字符串[]thingsToExecute=config.getStringArray(“名称”);
返回新的HashSet(Arrays.asList(thingsToExecute));
}
}
公开类开放文件{
私有静态设置为执行;
公共静态void main(字符串[]args){
updateToExecute();
connect();
}
私有静态void connect(){
//obatins JSONObject的代码
如果(obj4.has(“名称”)){
字符串personName=obj4.get(“name”).toString();
updateToExecute();
如果(toExecute.contains(personName)){
System.out.println(“成功”);
}否则{
System.out.println(personName+“不在列表中”);
}
}
}
私有静态void updateToExecute(){
toExecute=PropertiesFile.load();
}
}
您是否在此处查看了有关重新加载文件配置的文档:是的,但仍然无效。然后粘贴使用文件重新加载的正确代码,向我们展示您的尝试