Я недавно узнал о java.util.Properties
, что позволяет мне писать и читать из конфига без написания для него собственной функции.
Я был взволнован, поскольку им так легко пользоваться, но позже я заметил недостаток, когда я сохранил измененный файл конфигурации.
Вот мой код, довольно простой на данный момент:
FileWriter writer = null;
Properties configFile = new Properties();
configFile.load(ReadFileTest.class.getClassLoader().getResourceAsStream("config.txt"));
String screenwidth = configFile.getProperty("screenwidth");
String screenheight = configFile.getProperty("screenheight");
System.out.println(screenwidth);
System.out.println(screenheight);
configFile.setProperty("screenwidth", "1024");
configFile.setProperty("screenheight", "600");
try {
writer = new FileWriter("config.txt" );
configFile.store(writer, null);
} catch (IOException e) {
e.printStackTrace();
}
writer.flush();
writer.close();
Проблема, которую я заметил, заключалась в том, что файл конфигурации, который я пытаюсь редактировать, хранится так:
foo: bar
bar: foo
foobar: barfoo
Однако, вывод после properties.store(writer, null)
таков:
foo=bar
bar=foo
foobar=barfoo
Файл конфигурации, который я редактирую, предназначен не для моей программы, а для другого приложения, которому требуется файл конфигурации в формате, показанном выше, с :
в качестве разделителя, иначе он сбросит конфигурацию по умолчанию.
Кто-нибудь знает, как это легко изменить?
Я просмотрел первые 5 страниц Google сейчас, но не нашел никого с подобной проблемой.
Я также проверил Javadoc и не нашел функции, которая позволила бы мне изменить его, не написав для себя класс.
Я хотел бы использовать Properties
на данный момент, так как он есть и довольно прост в использовании.
У меня также появилась идея просто заменить все =
на :
после того, как я сохранил файл, но, может быть, кто-то получил лучшее предложение?