Alterar apenas uma linha de arquivo properties [Resolvido]

11 respostas
Aldeir

Olá pessoal,
Exite uma maneira menos trabalhosa de alterar um arquivo propertie sem tem que regravar todas as propriedades existentes?

Vou explicar melhor:
Estou utilizando um arquivo de propriedades para configurar uma aplicação. No entanto, caso o usuário faça alguma alteração ao gravar no arquivo propertie tenho que gravar todas as linhas novamente. Ou seja, para não perder o que já tinha sido gravado anteriormente, peciso ler toas as pripriedades e guardá-las alterar o que for necessário e gravá-las novamente.

um exemplo:

Properties properties = new Properties();

//uma das configurações

properties.setProperty(vendedor, vendedor);

properties.store(new FileOutputStream(config.properties), Configurações);

11 Respostas

Aldeir

Tem uma outra forma ou tenho que gerar o arquivo novamente e gravar tudo de novo?

romarcio

Você pode ler o arquivo e alterar apenas uma propriedade sem mexer nas demais. Isso não quer dizer que vai perder as outras quando regravar o arquivo. O conteúdo do arquivo está em memória até você regravar e fechar o arquivo (.close()).

Aldeir

Poderia me dá um exemplo? Pois fiz o teste e ele apaga as proriedades que eu não alterei.

//metodo para gravar a configuracao do vendedor

private void setConfigVendedor(String vendedor){

try{

FileOutputStream file = new FileOutputStream(“config.properties”);

Properties properties = new Properties();

properties.setProperty(“vendedor”, vendedor);

<a href="//properties.put">//properties.put</a>(“vendedor”, vendedor);

properties.store(file, “Configurações”);

JOptionPane.showMessageDialog(null,“Configuração gravada com sucesso”, “Sucesso”, 0, icon);

file.close();

}catch(IOException e){

JOptionPane.showMessageDialog(null, “Não foi possível gravar ‘‘config.properties’’\n”,“Exception”,JOptionPane.ERROR_MESSAGE);

}

}

nesse caso queria alterar somente a configuração do nome do vendedor, mas apaga todo o restante das propriedades ficando somente o nome do vendedor no arquivo

fernandopaiva

Aldeir:
Poderia me dá um exemplo? Pois fiz o teste e ele apaga as proriedades que eu não alterei.

//metodo para gravar a configuracao do vendedor

private void setConfigVendedor(String vendedor){

try{

FileOutputStream file = new FileOutputStream(“config.properties”);

Properties properties = new Properties();

properties.setProperty(“vendedor”, vendedor);

<a href="//properties.put">//properties.put</a>(“vendedor”, vendedor);

properties.store(file, “Configurações”);

JOptionPane.showMessageDialog(null,“Configuração gravada com sucesso”, “Sucesso”, 0, icon);

file.close();

}catch(IOException e){

JOptionPane.showMessageDialog(null, “Não foi possível gravar ‘‘config.properties’’\n”,“Exception”,JOptionPane.ERROR_MESSAGE);

}

}

nesse caso queria alterar somente a configuração do nome do vendedor, mas apaga todo o restante das propriedades ficando somente o nome do vendedor no arquivo

Coloque seus codigos entre a tag CODE aqui no forum

Vc pode recuperar a chave=valor do Properties, altera-la q ele somente vai fazer a alteração mantendo o restante.
Uma opcao aos properties seria o Preferences, de uma pesquisada é sempre bom ter alternativas.

t+ e boa sorte.

romarcio

1° você vai ler o arquivo:

File file = new File("C:\\TutorialArquivos\\jdbc.properties");
        Properties properties = new Properties();

        try {
            FileInputStream fis = new FileInputStream(file);
            properties.load(fis);
        } catch (IOException e) {
            e.printStackTrace();
        }

Depois vai alterar uma propriedade qualquer, por exemplo a propriedade: jdbc.user = root

properties.setProperty("jdbc.user", "admin");
3° Vai salvar o arquivo novamente:

try { FileOutputStream fos = new FileOutputStream(file); properties.store(fos, "FILE JDBC PROPERTIES:"); fos.close(); } catch (IOException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); }
No final terá:jdbc.user = admin

E as demais propriedades irão continuar idênticas.

Aldeir

Valeu amigo, farei isso

Aldeir

Certinho.
Da forma que eu estava fazendo, estava recriando o arquivo inteiro e colocando só a propriedade que eu estava tentando editar.

Valeu mesmo.
Obrigado

Aldeir

Certinho.
Da forma que eu estava fazendo, estava recriando o arquivo inteiro e colocando só a propriedade que eu estava tentando editar.

Valeu mesmo.
Obrigado

Aldeir

Certinho.
Da forma que eu estava fazendo, estava recriando o arquivo inteiro e colocando só a propriedade que eu estava tentando editar.

Valeu mesmo.
Obrigado

romarcio

Aldeir:
Certinho.
Da forma que eu estava fazendo, estava recriando o arquivo inteiro e colocando só a propriedade que eu estava tentando editar.

Valeu mesmo.
Obrigado

:thumbup:

Edita seu 1° post e coloca [Resolvido] ao lado do titulo.

T+

Aldeir

Obrigado

Criado 25 de janeiro de 2012
Ultima resposta 18 de ago. de 2012
Respostas 11
Participantes 3