как правильно сохранить параметр в файл типа .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) {}

Что я делаю не так?


Ответы (0 шт):