gpt4 book ai didi

java - 使用 Spring 可以读取但无法写入属性文件

转载 作者:行者123 更新时间:2023-12-01 16:52:54 27 4
gpt4 key购买 nike

我正在使用一些可配置值的属性文件。但我不知道为什么我可以读取属性值,但当我想更新现有或写入新的键/值对时它不起作用

Properties props = new Properties();

try
{
String key = "maxHolidays";

File file = ResourceUtils.getFile("classpath:config.properties");
InputStream in = new FileInputStream(file);
props.load(in);
String maxHolidays = (String) props.get(key);
System.out.println(maxHolidays);

props.setProperty("newkey", "newvalue");

OutputStream out = new FileOutputStream(file);

props.store(out, null);

我终于找到了解决办法。这里所有的答案基本上都是不对的。可以在运行时更改属性文件。我犯的唯一错误是打开输出流时没有关闭输入流。这是对我有用的代码。

    File file = ResourceUtils.getFile("classpath:First.properties");
FileInputStream in = new FileInputStream(file);
Properties props = new Properties();
props.load(in);
System.out.println(props.getProperty("country"));
in.close();

FileOutputStream out = new FileOutputStream(file);
props.setProperty("country", "germany");
props.store(out, null);
System.out.println(props.getProperty("country"));
out.close();

但是真正令人烦恼的是没有抛出异常。我花了3天时间才解决这个问题。当 InputStream 仍然打开时,操作系统似乎会阻止写入文件。但我再次期望抛出一些异常,但事实并非如此。

最佳答案

这应该有效,

    Properties props = new Properties();

try {
String key = "maxHolidays";

File file = ResourceUtils.getFile("file:config.properties");
InputStream in = new FileInputStream(file);
props.load(in);
String maxHolidays = (String) props.get(key);
System.out.println(maxHolidays);

props.setProperty("newkey", "newvalue");

OutputStream out = new FileOutputStream(file);

props.store(out, null);
} catch (IOException e) {
e.printStackTrace();
}

将 config.properties 放入项目文件夹的根目录

关于java - 使用 Spring 可以读取但无法写入属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com