Я использую файл свойств для некоторых настраиваемых значений. Но я не знаю, почему я могу прочитать значение свойства, но когда я хочу обновить существующую или записать новую пару ключ / значение, она не работает
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();
Но что действительно раздражает, что не было сгенерировано Exception. На решение этой проблемы у меня ушло 3 дня. Операционная система, кажется, блокирует запись в файл, когда InputStream все еще открыт. Но опять же, я ожидаю, что возникнет какое-то исключение, чего нет.