我创建了一个java应用程序,它从属性文件(resources-> settings - > config.properties)复制数据并使用它。在某一点上,属性文件值会更新,代码必须使用新值。从Netbeans执行时,代码工作正常。但是当我在构建之后从dist文件夹执行ti时,即使我更改属性文件,每次都会加载旧值。属性文件会更新,但使用的值仍然是旧的。
编写属性文件的代码
File f = new File(System.getProperty("user.dir") + "\\resources\\settings\\config.properties");
try (OutputStream output = new FileOutputStream(f)) {
Properties prop = new Properties();
// set the properties value
prop.setProperty("xml", xmlFileTextBox.getText());
// save properties to project root folder.
prop.store(output, null);
} catch (IOException exception) {
exception.printStackTrace();
}
读取属性文件中的值的代码
try {
Properties prop = new Properties();
String propFileName = "settings/config.properties";
try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propFileName)) {
if (inputStream != null) {
prop.load(inputStream);
xmlFileTextBox.setText(prop.getProperty("xml"));
}
inputStream.close();
}
} catch (Exception e) {
System.out.println("Exception: " + e);}
答案 0 :(得分:2)
您正在阅读的文件是与您的应用程序一起打包的文件,而不是您要保存到的文件。
此代码getClass().getClassLoader().getResourceAsStream(propFileName))
为您提供类路径中的资源。
您需要以与保存属性相同的方式创建文件,然后从该文件中获取InputStream。
如果要在原始属性文件中使用默认值,则可能需要在"保存文件中检查空值"如果它没有数据,则从您的默认资源文件中读取。