Carregando Parâmetros Arquivo INI

8 respostas
T

Olá gente, gostaria de ler parâmetros de um arquivo ini. Hoje meu código consegue ler linha a linha do arquivo que contem diretorios e outros parâmetros, porém gostaria de refinar estas informações para serem enviadas para ouras classes.

Alguém poderia me ajudar?
Valeu!

8 Respostas

G

Como é a estrutura de um arquivo .ini? Acho que a api de Properties pode te ajudar:

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html

este post pode te dizer algo:

http://www.guj.com.br/posts/list/45898.java

P

Cara,

Como o arquivo .ini é um formato proprietário do Windows, você tem algumas formas para resolver isto, todas direcionadas para essa arquitetura proprietária:

  1. usar o JNI para chamar as APIs do Windows como GetPrivateProfileString que podem ler seções e entradas específicas deste .ini; existe um componente chamado jniwrapper que facilita a interface a essas chamadas de APIs Windows, mas ele é pago, não sei se existe algo free - mas essa creio que seria a saída mais rápida;
  2. abrir o arquivo como uma InputStream ler o seu contéudo e montar um parser para identificar seções e entradas do arquivo ini, mas essa saída pode ser extremamente trabalhosa;
  3. Se não me engano existem componentes prontos para ler arquivos ini no java, dá uma procurada no google, você deve achar alguma coisa.

Se você precisar de uma lista de APIs do Windows para ler inis, me avise, eu posto algo aqui.

Abraço!

E

A forma padrão de ler configurações em um programa Java é usar um arquivo “.properties”. Embora não tenha exatamente os mesmos recursos de um arquivo “.ini”, se for o que estou pensando, é suficiente.

Exemplo de um arquivo .properties:

# exemplo de um comentario
usuario=abilio
senha=dasilva
host=123.45.67.89
texto.longo=se precisar escrever uma \
   configuracao comprida, escreva-a em varias \
   linhas, terminando cada linha com uma contra-barra.

Note que não há grupos como nos arquivos .ini, nem é possível gravar dados binários como em arquivos .ini, ou então atualizar um arquivo .properties de maneira simples. Mas normalmente isso é suficiente.

P

Entanglement,

O problema é que arquivos ini tem uma estrutura completamente diferente de arquivos .properties. Eles tem seções de informações, de certa forma ele está estruturalmente muito mais para um arquivo xml do que para um .properties. Um exemplo:

[Seção 1]
informacao1=valor1
informacao2=valor2

[Seção 2]
informacao1=valor1
informacao2=valor2

Por essa razão a estrutura
informacao=valor
dos arquivos .properties é incompatível com a dos arquivos inis.

P

A propósito, pode até funcionar. Mas é uma baita gambi!!!

E

Eu sei direitinho disso - a estrutura de um arquivo .ini tem 2 níveis - grupos e pares chave-valor. Para simular isso, pode-se fazer uma de duas coisas:
a) Acrescentar a informação de seção ao nome de cada chave. É meio porco mas costuma funcionar bem - só não se esquecer que, diferentemente do Windows, os nomes de chaves não ignoram a diferença entre minúsculas e maiúsculas.

secao1.informacao1=valor1
secao1.informacao2=valor2

secao2.informacao1=valor1
secao2.informacao2=valor2

b) Usar um verdadeiro arquivo XML, o que normalmente é muita complicação para pouco ganho.

<xml>
    <secao nome="secao1">
        <item name="informacao1">valor1</item>
        <item name="informacao2">valor2</item>
    </secao>
    <secao nome="secao2">
        <item name="informacao1">valor1</item>
        <item name="informacao2">valor2</item>
    </secao>
</xml>

c) Arranjar uma biblioteca que simule a leitura e gravação de arquivos .ini.

P

Entanglement,

Dá pra escrever arquivos .ini desse jeito? Se funcionar, dane-se que é porco.

T

Caramba então é melhor passa rpra xml o arquivo e carregar sus atributos??

Criado 16 de novembro de 2009
Ultima resposta 16 de nov. de 2009
Respostas 8
Participantes 4