Недавно я узнал о java.util.Properties
, что позволяет мне писать и читать из конфига без написания моей собственной функции.Как изменить символ разделителя Properties.store() с "=" на ":"?
Я был взволнован, так как он настолько прост в использовании, но позже заметил недостаток, когда я сохранил измененный файл конфигурации.
Здесь мой код, довольно просто сейчас:
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
, так как он есть и довольно прост в использовании. У меня также появилась идея просто заменить все =
:
после того, как я сохранил файл, но, возможно, у кого-то есть лучшее предложение?
Это довольно хорошая идея, я просто буду использовать Свойства, чтобы прочитать файл и FileWriter, чтобы сохранить его обратно, спасибо, что попробуете его сейчас. – user1137183
Однако проверьте, как Properties.saveConvert() и loadConvert() выходят из специальных символов. Это может быть серьезной проблемой для вас. – user949300