Dica para arquivos .properties

6 respostas
Linkel

Aí, galera...

Estou tentando trabalhar com arquivos properties mas está dificil, rsrsrs...

Criei uma classe só para obter os valores extraídos dos arquivos .properties, mas só retornam valor "null"...

Alguém sabe me dizer o que está errado nesse códio?

//Configuracoes.java;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class Configuracoes {
    
    public Properties propsRede = new Properties();
    
    public void obterConfigRede() {
        // já coloquei assim...
        File file = new Fiel("rede.properties");
        // mas não encontrou o diretório ou o arquivo, e então eu coloquei assim...
        File file = new File("/opt/DoctorPack/LinkelMed/src/doctorpack/rede.properties"); // não deu mensagem de erro...
        try {
            FileInputStream fis = new FileInputStream(file);
            propsRede.load(fis);
        }
        catch (IOException ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }
}
.. Na classe Conexao(), para usar os valores retornados do arquivo .properties, fiz assim...
public class Conexao {
    
    private Configuracoes configProp = new Configuracoes();
    
    public void conectar() {
        try {
            configProp.obterConfigRede();
            Class.forName("org.postgresql.Driver");
            host = configProp.propsRede.getProperty("rede.IP_Servidor");
            porta = configProp.propsRede.getProperty("rede.Porta_Servidor");
            con = DriverManager.getConnection("jdbc:postgresql://"+host+":"+porta+"/banco_de_dados","usuario","senha");
        }
        catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"Conexão recusada!\n" +
                                               "Contacte o administrador do sistema.");
            System.exit(0);
        }
    }
    // ...
}
Se alguém souber o que estou tentando fazer, por favor, me dá uma luz aí!!!

Valeu! Um abraço!

6 Respostas

B

Ola,

tente pelo getresourceAsStream… assim:

propsRede.load(this.getClass().getResourceasStream("/doctorpack/rede.properties"));
Sabendo que estou considerando que o “src” é o seu diretorio de sources e se vc tiverusando um IDE, tal qual eclipse, ele vai estar jogando
este arquivo para dentro do “bin”.

Linkel

BrunoCarlo:
Ola,

tente pelo getresourceAsStream… assim:

propsRede.load(this.getClass().getResourceasStream("/doctorpack/rede.properties"));
Sabendo que estou considerando que o “src” é o seu diretorio de sources e se vc tiverusando um IDE, tal qual eclipse, ele vai estar jogando
este arquivo para dentro do “bin”.


Então, vamos ver…

Linkel

iiiiiiiiiiiiiiiii…
Não rolou não…
Agora o método ficou assim:

public void obterConfigRede() { try { propsRede.load(propsRede.getClass().getResourceAsStream("/doctorpack/rede.properties")); } catch (IOException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } }
Mas continua retornando valores nulos…
Não seria como estou puxando esses valores?
Estou fazendo assim:

// numa outra classe... private Configuracoes configProp = new Configuracoes(); // ... host = configProp.propsRede.getProperty("rede.IP_Servidor"); porta = configProp.propsRede.getProperty("rede.Porta_Servidor"); // ...
Será que não é aí?

Linkel

O que se acrescenta ou muda desse artigo (http://www.guj.com.br/java.tutorial.artigo.35.1.guj) para dar certo???
Segui as instruções dele mas não sabia onde colocar o código, então criei meus métodos…
Como fazer para se adequar à esse tutorial???

Linkel

Hahahahahaha...
Consegui!!!!!!!!!!!!!

Puxa, a comu me deixou sozinho nessa, com exceção do amigo brunocarlo, claro...
Só eu quem postei no meu próprio tópico, rsrsrsrs...
Mas achei o problema e está aí para quem mais precisar...

Importente dizer que é uma boa forma de configuração de variáveis ambiente de aplicação java...
Sem falar que se pode transferir valores de variaveis de uma classe para outra facilmente, etc...
Segue a dica...

A forma completa: Na classe Configuracao()...
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class Configuracoes {
    
    public Properties propsSessao = new Properties(), propsRede = new Properties();
    
    public void obterConfigRede() {
        try {
            propsRede.load(propsRede.getClass().getResourceAsStream("/doctorpack/rede.properties"));
        }
        catch (IOException ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }
}
Na classe Conexao() para onde instanciei os valores...
//...
    private Configuracoes configProp = new Configuracoes();

    public void conectarRemoto() {
        try {
            configProp.obterConfigRede();
            Class.forName("org.postgresql.Driver");

            host = configProp.propsRede.getProperty("IP_Servidor"); // apenas o nome da chave no arquivo...
            porta = configProp.propsRede.getProperty("Porta_Servidor"); // apenas o nome da chave no arquivo...

            con = DriverManager.getConnection("jdbc:postgresql://"+host+":"+porta+"/banco_de_dados","usuario","senha");
        }
        catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"Conexão remota recusada!\n" +
                                               "Contacte o administrador do sistema.");
            System.exit(0);
        }
    }
Giulliano

é isso ae…rss…

Agora que fui atrás pra ver como funcionava vc aprendeu…o esquema é por tabelas de chave e valor…vc não estava usando as chaves…

valews…

Criado 4 de março de 2008
Ultima resposta 4 de mar. de 2008
Respostas 6
Participantes 3