A solução da hoat4 é muito elegante e simples. Ele funciona para todos os arquivos ini sãos . No entanto, tenho visto muitos que possuem caracteres de espaço sem escape na chave .
Para resolver isso, baixei e modifiquei uma cópia do java.util.Properties
. Embora isso seja um pouco heterodoxo e de curto prazo, os mods reais eram apenas algumas linhas e bastante simples. Apresentarei uma proposta à comunidade JDK para incluir as mudanças.
Adicionando uma variável de classe interna:
private boolean _spaceCharOn = false;
Eu controlo o processamento relacionado à digitalização do ponto de separação de chave / valor. Substituí o código de pesquisa de caracteres de espaço por um pequeno método privado que retorna um booleano dependendo do estado da variável acima.
private boolean isSpaceSeparator(char c) {
if (_spaceCharOn) {
return (c == ' ' || c == '\t' || c == '\f');
} else {
return (c == '\t' || c == '\f');
}
}
Este método é usado em dois locais dentro do método privado load0(...)
.
Também existe um método público para ativá-lo, mas seria melhor usar a versão original do Properties
se o separador de espaço não for um problema para seu aplicativo.
Se houver interesse, gostaria de postar o código em meu IniFile.java
arquivo. Funciona com qualquer uma das versões do Properties
.