как правильно сохранить параметр в файл типа .properties
моя программа запрашивает набор параметров, записывает их в файл (использую клас properties для хранения данных в формате ключ-значение) и затем эти данные использует другой класс программы. С чтением параметров проблем нет, а при записи структура файла меняется, причем один из параметров записывается некорректно. Подскажите, пожалуйста, где ошибка. вот этим методом я считываю ключ\значение из файла (все работает):
public class ConfigClass {
public static String configFile = "src/config.properties";
public static String getValueFromFile(String key, String fileName) throws IOException {
Properties p = new Properties();
FileInputStream cfg = new FileInputStream(fileName);
p.load(cfg);
cfg.close();
return p.getProperty(key);
}
public static String getConfigValue(String key) throws IOException {
return getValueFromFile(key, configFile);
}
а вот этим пытаюсь перезаписать\изменить:
public static void setValueToFile(String key, String value, String fileName) throws IOException {
Properties p = new Properties();
FileInputStream cfg = new FileInputStream(fileName);
p.load(cfg); // load params
cfg.close();
p.setProperty(key, value); // change choosen one
FileOutputStream cfg1 = new FileOutputStream(fileName);
p.save(cfg1,null); // save to file
cfg1.close();
}
public static void setConfigValue(String key, String value) throws IOException {
setValueToFile(key, value, configFile);
}
но структура файла нарушается, файл выглядел так (и я хочу чтобы порядок значений таким и оставался):
base_url=https://backend.qa.game.com
login_name=sviatoslav
login_password=87654321
brand_name=Michigan
bonus_title=New Hilo
game_title='HiLo 21'
player_id=14099
bet_denomination=2.00
а становится таким :
#Fri May 15 19:05:22 EEST 2020
bonus_title=New Hilo
game_title='HiLo 21'
login_password=87654321
brand_name=Michigan
bet_denomination=2.00
base_url=https\://backend.qa.game.com // тут вообще символ добавляется
player_id=14099828
login_name=sviatoslav
после перезаписи первого параметра:
loginName = log_name.getText();
try {
ConfigClass.setConfigValue("login_name", loginName);
} catch (IOException ex) {}
Что я делаю не так?