Java 属性文件睡眠
我有一个类,它将加载属性键。在执行过程中,它会休眠20秒,在休眠期间,我向属性文件添加一个新密钥并保存它。当程序唤醒时,它会再次读取属性文件,但其输出不会显示在睡眠期间添加的属性。如何使程序识别属性文件更改 这是我目前的代码:Java 属性文件睡眠,java,Java,我有一个类,它将加载属性键。在执行过程中,它会休眠20秒,在休眠期间,我向属性文件添加一个新密钥并保存它。当程序唤醒时,它会再次读取属性文件,但其输出不会显示在睡眠期间添加的属性。如何使程序识别属性文件更改 这是我目前的代码: public class Test { public static void main(String[] args) { Properties props = new Properties(); InputStream is = T
public class Test {
public static void main(String[] args) {
Properties props = new Properties();
InputStream is = Test.class.getClassLoader().getResourceAsStream(
"com/vijayspring/common/CityIns.properties");
try {
props.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(props.stringPropertyNames());
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Properties props1 = new Properties();
InputStream is1 = Test.class.getClassLoader().getResourceAsStream(
"com/vijayspring/common/CityIns.properties");
try {
props1.load(is1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(props1.stringPropertyNames());
}
}
当您指的是
src
文件夹时,我假设您使用的是IDE。如果我知道它到底是哪个IDE,我的答案可能会更准确
然而,ClassLoader.getResourceAsStream()
方法正在从bin
(实际名称可能因IDE而异)文件夹中读取属性文件,IDE通常在启动java程序时构建该文件夹一次。任何不是java源文件的文件,因此不会以结尾。java
只是从src
复制到bin
因此,20秒后,您的程序将读取
bin
文件夹中未编辑的属性文件。您将属性文件保存在哪里?你知道你从一个不可变的位置加载属性吗?我保存在项目的src文件夹中,它正在加载密钥并在控制台中打印。请添加这部分代码,这对你的问题至关重要。@M.leRutte,我想他是说他手动修改了属性文件。我的想法也一样。对于Intellij,它将是目标目录。使用相对路径读取时的典型情况。通常情况下,IDE是一个每当发生新的更改时都会将文件热交换到输出目录的IDE。谢谢,你说得对,我已经编辑了bin中的属性,现在它可以工作了