.Properties nao Altera

5 respostas
jopss

Fala Galera, estou fazendo uma tela de opções para o meu sistema, mas nao tah certo ainda…

Eu criei a properties, gravo e consulto numa boa, mas ele soh “efetiva” a gravação somente quando eu finalizo o programa, nao em tempo de execução…

Na verdade, ele grava em tempo de execução sim, pois fui verifcar a alteração no codigo e consta, mas mesmo assim, qualquer consulta q se fizer no arquivo, me retorna a ULTIMA GRAVAÇÃO e nao a GRAVAÇÃO ATUAL!!!

Fechando-se o programa e reabrindo, uma consulta ao arquivo retorna a alteração feita… mas se realterar-mos este novamente, continua retornando a ultima gravacao…

Como q eu gravo:

try{
            Properties props = new Properties();
            java.io.InputStream in =  getClass().getResource("/modelo/Opcoes.properties").openStream();
            props.load(in); // os dados que estão no arquivo, jogando no props
            
            java.io.File file = new java.io.File("./src//modelo/Opcoes.properties");
            java.io.FileOutputStream out = new java.io.FileOutputStream(file);
            
             props.setProperty("texto1",tela.getTexto1());
             props.setProperty("texto2",tela.getTexto2());
           
            props.store(out,"Alterando");//grava
            
            //fecha os arquivos
            in.close(); 
            out.close(); 
            
            javax.swing.JOptionPane.showMessageDialog(null,"Opções Gravadas");
            
            tela.dispose();
        } catch (Exception ex) {
            javax.swing.JOptionPane.showMessageDialog(null,"Erro cadastrarOpcoes, EventosOpcoes "+ex.getMessage());
            ex.printStackTrace();
        }

Como eu retorno:

try{
            //retorna o aquivo de properties
            Properties props = new Properties();
            java.io.InputStream arquivo =  getClass().getResource("/modelo/Opcoes.properties").openStream();
            props.load(arquivo); //lê os dados que estão no arquivo, jogando no props
            
            //retorna o conteudo do arquivo
            String texto1 = props.getProperty("texto1");
            String texto2 = props.getProperty("texto2");
            
            //coloca na tela
            tela.setTexto1(texto1);
            tela.setTexto2(texto2);
            
            
        }catch(Exception ex){
            ex.printStackTrace();
        }

QQ tem de errado nisso???

Sera q eh problema de .properties??

flw

jopss

5 Respostas

jopss

Bem, pelo oq eu vi aki o problema esta no OutputStream… o geito q eu estou colocando a patch do arquivo está errado…

Como eu faria pra fazer este patch… pq o getResource somente retorna ou uma URL ou um InputStream…

E no Output como faria??

jopss

fenrir

Já tentou fechar o InputStream ANTES de abrir o OutputStream?

thigo.san

Eu estou com o mesmo problema que voce, e ainda não consegui resolver, me cadastrei aqui pra vê se encontro alguém que possa me ajudar. Eu estou lendo o meu properties diferente de voce, estou usando a classe ResourceBundle e PropertyResourceBundle, utilizo bem menos códigos para ler o properties.

cado

Eu faço assim:

import java.io.FileOutputStream;
import java.util.Properties;

public class TesteProperties {

    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.load(TesteProperties.class.getResourceAsStream("teste.properties"));

        String nome = properties.getProperty("Nome");
        String idade = properties.getProperty("Idade");
        System.out.println(nome + " / " + idade + " anos.");

        properties.setProperty("Nome", "Ricardo");
        properties.setProperty("Idade", "26");

        properties.store(new FileOutputStream("src/teste.properties"),
                "Este aquivo nao deve ser modificado");

        String nome2 = properties.getProperty("Nome");
        String idade2 = properties.getProperty("Idade");
        System.out.println(nome2 + " / " + idade2 + " anos.");

    }

}

:wink:

thigo.san

Cara Consegui fazer de um outro jeito…

File file = new File(endereço do arquivo);

Properties prop = System.getProperty();

prop.load(new FileInputStream(file));

System.setProperty(prop);

pra retornar os valores…

System.getProperty(“XXX”);

Criado 11 de dezembro de 2006
Ultima resposta 28 de dez. de 2006
Respostas 5
Participantes 4