Порядок свойств в файле свойств Java - PullRequest
0 голосов
/ 02 октября 2018

Когда я выполняю следующий код для создания файла свойств, он не соответствует порядку.

public Config() {
    this.configFile = new Properties();
    InputStream input = null;
    try {
        input = new FileInputStream("resources/config.properties");
        this.configFile.load(input);
    } catch (IOException e) {
        System.err.println("[ err. ] " + e);
    }
}

public static void initConfig() {
    if(!new File("resources/config.properties").exists()) {
        Properties prop = new Properties();
        prop.setProperty("test_key_1", "Value1");
        prop.setProperty("test_key_2", "Value2");
        prop.setProperty("test_key_3", "Value3");
        prop.setProperty("test_key_4", "Value4");
        prop.keySet();
        try {
            prop.store(new FileOutputStream("resources/config.properties"), null);
            System.out.println("[ info ] Configuration file successful created.");
        } catch (IOException e) {
            System.err.println("[ err. ] " + e);
        }
    }
}

Когда я открываю config.properties, у меня есть это:

test_key_3=Value3
test_key_2=Value2
test_key_1=Value1
test_key_4=Value4

и я хочу это:

test_key_1=Value1
test_key_2=Value2
test_key_3=Value3
test_key_4=Value4

1 Ответ

0 голосов
/ 02 октября 2018

Рассмотрите возможность использования карты другого типа для хранения этих свойств.Самый простой способ - создать его на основе уже существующего объекта Properties.

Вы не упомянули, хотите ли вы сохранить порядок вставки или сохранить так называемую естественную сортировку.В зависимости от случая вы можете использовать LinkedHashMap или TreeMap .

Однако теперь вам придется выводить объект в файл самостоятельно, дляпример:

Map<Object, Object> map = new TreeMap<>(yourPropertiesObject);
try(PrintWriter printer = new PrintWriter(yourOutputFile)) {
  for (Entry<Object, Object> e : map.entrySet()) {
    printer.println(String.format("%s=%s", e.getKey(), e.getValue()));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...