Alterar apenas uma linha de arquivo properties [Resolvido]

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”);

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

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()).

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);
//properties.put(“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

[quote=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);
//properties.put(“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[/quote]

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.

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.

1 curtida

Valeu amigo, farei isso

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

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

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

[quote=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[/quote]

:thumbup:

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

T+

Obrigado