Метод магазина ini4j изменяет символ комментария
Я хочу изменить запись ключа в разделе INI-файла. Я использую библиотеку ini4j. Поэтому я написал код ниже. Я могу изменить запись, но есть и другие изменения, которые я не хочу:
- замена ";" со знаком "#", который обозначает строки комментариев
- добавление пустых строк между разделами и комментариями
Так как я могу решить это?
это то, что я ожидал:
[section1]
key1=40
key2=30
[section2]
key1=10
key2=20
;section3
[section3]
key1=10
key2=20
это файл после редактирования:
[section1]
key1=40
key2=30
[section2]
key1=10
key2=20
#section3
[section3]
key1=10
key2=20
Мой код:
public static void setEntry(String filePath, String fileName, String sectionName, String keyName, String entry)
throws IOException {
String path = filePath.concat(fileName);
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(path);
Ini ini = new Ini(inputStream);
ini.getConfig().setStrictOperator(true);
Section section = ini.get(sectionName);
if (section != null) {
if (section.containsKey(keyName)) {
section.put(keyName, entry);
}
else {
section.add(keyName, entry);
}
}
else {
section = ini.add(sectionName);
section.add(keyName, entry);
}
File iniFile = new File(path);
ini.store(iniFile);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
inputStream.close();
}
}
Есть ли способ изменить символ комментария по умолчанию?
1 ответ
Видимо, даже когда ini4j может читать комментарии с ;
а также #
, он не сохраняет это, когда вы должны записать их в INI-файл.
Если вы проверите AbstractFormatter
класс проекта ini4j, вы можете видеть, что единственный оператор комментария, который имеет значение, когда пишет #
Если у вас есть доступ к исходному коду, вы можете изменить его с помощью своего пользовательского оператора комментариев, и он должен работать.
abstract class AbstractFormatter implements HandlerBase
{
private static final char OPERATOR = '=';
private static final char COMMENT = '#'; // <--- change this to ';'
...
Что касается пустых строк, они просто эстетика. Опять же, если у вас есть доступ к исходному коду, вы можете отредактировать его самостоятельно (комментируя эту и эту строки?), Но я полагаю, это проще, если вы просто переформатируете свой INI-файл после создания этой библиотекой и удалите все пустые линий.