рішення hoat4 дуже елегантне і просте. Він працює для всіх здорових ini-файлів. Однак я бачив багатьох, у яких у ключі не залишилися символи пробілу .
Щоб вирішити це, я завантажив і змінив копію java.util.Properties
. Хоча це трохи неортодоксально і короткостроково, фактичні моди були лише декількома рядками та досить простими. Я буду висувати пропозицію громаді JDK про включення змін.
Додавши внутрішню змінну класу:
private boolean _spaceCharOn = false;
Я контролюю обробку, пов’язану зі скануванням на точку поділу ключа / значення. Я замінив код пошуку пробілів символів невеликим приватним методом, який повертає булеву залежність від стану наведеної вище змінної.
private boolean isSpaceSeparator(char c) {
if (_spaceCharOn) {
return (c == ' ' || c == '\t' || c == '\f');
} else {
return (c == '\t' || c == '\f');
}
}
Цей метод використовується в двох місцях в рамках приватного методу load0(...)
.
Існує також загальнодоступний метод його включення, але було б краще використовувати оригінальну версію, Properties
якщо роздільник простору не є проблемою для вашої програми.
Якщо є інтерес, я хотів би опублікувати код у своєму IniFile.java
файлі. Він працює з будь-якою версією Properties
.