Valor do atributo

Prezados boa tarde, aqui estou eu com uma duvida que eu diria ser simples mais eu nao estou conseguindo então pesso a ajuda dos colegas q dominam a linguagem.

preciso pegar o valor de um atributo do tipo Properties que esta na classe principal do projeto, ou seja ao iniciar a aplicação Classe Aplicacao.java eu preencho este atributo com os valores default do sistema , já um item do menu principal chama uma classe na qual eu preciso gravar um arquivo so que o caminho onde o mesmo deve ser salvo esta contido no atributo propriedades sob o nome “diretorioDados”

consultei aqui no grupo e tentei fazer da forma abaixo mais não funcionou

      Properties prop = (Properties) Aplicacao.class.getField("propriedades").get(null);
      String pasta = prop.getProperty("diretorioDados");

Algumas informações a mais sobre o projeto
projeto java usando o framework OpenSwing

Cara, não use reflections para tarefas triviais como essa. Crie um método getPropriedades() que retorna o objeto do tipo Properties. Qual a dificuldade nisso ?

Olá rmendes08

Prezado eu criei o metodo Get ele tá lá na classe principal agora se o que eu estou fazendo é certo ou errado… de qualquer forma esta ocorrendo um erro então eu mudei o que estava fazendo instanciei a classe, não achei que precisasse fazer isto mais fiz

Aplicacao obj = new Aplicacao();
Properties prop = obj.getPropriedades();
String pastaDados = prop.getProperty(“diretorioDados”);

   String Arquivo = pastaDados.trim() + "\\" + arquivo.getNome() + arquivo.getExtensao();

também não sei se é a forma mais correta de se fazer isto ( instanciar a classe porque pensei que ela estando em execução eu não precisasse e achei a outra forma mais correta )

[quote=rlira]Olá rmendes08

Prezado eu criei o metodo Get ele tá lá na classe principal agora se o que eu estou fazendo é certo ou errado… de qualquer forma esta ocorrendo um erro então eu mudei o que estava fazendo instanciei a classe, não achei que precisasse fazer isto mais fiz

       Aplicacao obj = new Aplicacao();
       Properties prop = obj.getPropriedades();
       String pastaDados = prop.getProperty("diretorioDados");    

       String Arquivo = pastaDados.trim() + "\\" + arquivo.getNome() + arquivo.getExtensao();

também não sei se é a forma mais correta de se fazer isto ( instanciar a classe porque pensei que ela estando em execução eu não precisasse e achei a outra forma mais correta )
[/quote]

Essa forma que você postou é a mais correta, agora, se isso não está funcionando, o problema é a sua classe Aplicacao.

obs: utilize as tags [code] para postar código.


private static Properties importacaoProperties;

	public static Properties getImportacaoProperties() {
		
                      importacaoProperties = new Properties();

			try {
				
				importacaoProperties.load(new FileInputStream(new File(PATH_IMPORTACAO_PROPERTIES)));
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return importacaoProperties;
	}

Olá Daniel boa tarde.

Cara achei interessante este metodo, até pensei em algo assim mais não prossegui porque a classe principal assim que o sistema entra em execução um metodo já abre o arquivo .ini e obtem as informações, então estas informações já estam disponiveis so que
nos atributos da classe Aplicacao.

ue… entao nao entendi seu problema…

se o problema e pegar um atributo no arquivo .properties vc vai fazer aquele codigo acima… e para recuperar o atributo vc faz


Classe.getImportacaoProperties().getProperty("minha_propriedade");

Dentro do arquivo de propriedade voce teria


minha_propriedade=teste

Então Daniel o meu problema … primeiro na verdade era saber como fazer em Java

eu nao pretendia abrir o arquivo isto porque ja sabia qua a informação estava no atributo da classe então
seria repetitivo abrir o arquivo ( coisa que a classe aplicacao já fez instantes atras ) então pensei…
"devo pegar do atributo da classe " tive os problemas de como fazer isto e terminei por instanciar a classe
aplicacao.

na verdade ainda penso que instanciar a classe aplicacao foi a forma correta? ela já nao esta em execução?
porque ela na verdade é a classe principal abri o menu etc…

mais o seu metodo na verdade é o meu metodo LoadConfiguracao() que eu uso na classe aplicacao no momento
em que executo

posta o seu codigo que fica mais facil de entender… mas pelo que eu entendi vc nao quer carregar mais de uma vez o arquivo de propriedades pq vc ja carregou antes…

vc pode fazer assim…



	public static Properties getImportacaoProperties() {

		
		if(importacaoProperties == null)
		{
			
			try {		
				importacaoProperties.load(new FileInputStream(new File(PATH_IMPORTACAO_PROPERTIES)));
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return importacaoProperties;
	}

a diferenca e que como o arquivo importacaoProperties é estatico… na proxima vez que vc chamar o método getImportacaoProperties() ele nao vai carregar novamente… só vai retornar o proprio importacaoProperties …

Isto mesmo meu caro, vc entendeu o que eu tava querendo… bem vou prosseguir aqui Obg pela força,
um abraço