Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sipmann

[Resolvido] Problemas com Java Properties

Recommended Posts

dae... beleza....

bom comessei a poco tempo com java e agora to dando uma mexida com .ini, então eu fiz uma classe pra retornar o valor da variavel desejada que esta no ini e para cadastrar ou editar outras variaveis no INI... selecionar ta beleza bufo... mas o editar não ta indo com a minha cara....

 

quem puder da uma ajuda ae... fico grato.....

 

package aplicativo;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import java.io.FileInputStream; 
/**
 *
 * @author Clovis
 */
public class Parametros {
	
	
	public static String RetornarParametro(String Parametro) {
		Properties abre = new Properties();
		try {
		
			abre.load(new FileInputStream("c:\\bancoMySQL.ini"));
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
			String ParametroReturn = abre.getProperty(Parametro);
			return ParametroReturn;
	}
	
	
	public static boolean DefinirParametro(String Parametro, String Valor) {
		
		Properties abre = new Properties();
		try {
			abre.load(new FileInputStream("c:\\bancoMySQL.ini"));
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		
		abre.setProperty(Parametro,Valor);
		return true;
	}
	
	
	
	/**
	 * Creates a new instance of Parametros
	 */
	public Parametros() {
		
		
		
	}
	
}

essá é a classe, eu comessei mais exatamente semana passada e não aprendi muito pq vou pegar o livro arrecem amanha... então me corrijam em tudo se possivel... mas de preferencia com a função do setproperty.....

 

vlwwwww

abraçoss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Sipmann.

 

Possa ser que eu esteja engando, porém voce declarou os métodos do classe como Static e sendo assim a classe Parametros não precisa ser instanciada para utilização dos métodos.

 

Vejo que voce definiu o método construtor no final da classe assim:

 

/**
	 * Creates a new instance of Parametros
	 */
	public Parametros() {
	}

Creio que isso não era necessário, pois os métodos da classe são estáticos (Static). Não sei se é isso que está causando o erro, porém voce não precisa instanciar a classe Parametros com métodos estáticos.

 

Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, posta pra gente o método setProperty, outra coisa, tira os static dos métodos, para que eles possam sem utilizados em instâncias.

 

Flwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta beleza vo faze isso... mas poderia me refrescar memoria qq seria a instancia?? eu sei q vai parece meio que burro mas n to lembrando...

e o que você quis diser com método??

como eu uso?? se for isso ta ae em baxo

 

Parametros param = new Parametros();
param.DefinirParametro('chave','valor');

uso isso

to comessando arrecem e so bem cria tmb então desculpem =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

O processo de instânciação é dada pelo operador new , que faz com que a partir de uma classe seja criado um objeto.

 

Ou seja, para instânciar sua classe é necessário fazer o processo:

 

Parametros param = new Parametros();

param.DefinirParametro("chave","valor");

 

Mas olhando a estrutura de sua classe, pode-se notar de que existem métodos (operações) que são estáticas (static), melhor dizendo, não necessitam de instância para ser chamados.

 

Agora em relação ao que te pedi para fazer é remover os static dos métodos para que esses métodos possam ser acessados por meio de instânciação, que seria o mais correto neste caso e outra coisa que lhe pedi foi mostrar pra gente como é método setProperty pois não encontrei no código que você me enviou.

 

Agora mais uma pergunta, você quer abrir esse arquivo para capturar um dados contido nele ok?

 

Tente utilizar arquivos .properties que são mais adequados para este tipo de utilização.

 

Flwww, grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta... entao quanto a instancia eu pensei certo =]

 

capturar os dados eu ja concigo com o PegarParametro(Parametro) e retorna beleza, mas o problema é no DefinirParametro, tipo, ele não cadastra la nem edita... quanto a arquivos properties pode ser, tanto faz, user .INI pois foi o primeiro que me ocorreu! =]

 

agora, vai me desculpar se eu estiver errado mas o método do set property não este qui?

 

abre.setProperty(Parametro,Valor);

 

???

 

obrigado por tudo até agora =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos.

 

Sipmann, o que o Moderador lhe pediu foi para que voce postasse o código da função abre.setProperty(Parametro,Valor), função esta que chamamos de método.

 

Pelo que eu pude perceber, a variável abre é uma instância (Objeto) da classe Properties(), cuja classe pertence ao Package java.util.Properties;.

 

Se não me falhe a memória, os metodos (funções) dessa classe são implementados para lerem arquivos de configuração *.INI.

 

A razão de estar ocorrendo o erro, isto é eu presumo, é justamente aquela que citei, onde até o Moderador reforçou, ou seja, retire a cláusula Static das funções (métodos) RetornaParametro e DefinirParametro, além disso fiz alguns ajustes nos dois métodos a seguir:

 

public String RetornarParametro(String Parametro) {
		Properties abre = new Properties();
		try {
		
			abre.load(new FileInputStream("c:\\bancoMySQL.ini"));
			return abre.getProperty(Parametro);  
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		return "";	
	}

  public boolean DefinirParametro(String Parametro, String Valor) {	  
		Properties abre = new Properties();
		try {
			abre.load(new FileInputStream("c:\\bancoMySQL.ini"));
			abre.setProperty(Parametro,Valor);
			return true;
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		return False;  
	}

Agora só não entendi uma coisa, porque o método DefinirParametro tem que ser um função que retorna booleano, ele poderia ser um método Void não poderia ? Então porque não definir assim:

 

public void DefinirParametro(String Parametro, String Valor) {	  
		Properties abre = new Properties();
		try {
			abre.load(new FileInputStream("c:\\bancoMySQL.ini"));
			abre.setProperty(Parametro,Valor);
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
}

Métodos declarados como Void, são métodos que não retornam valores, as instruções são executadas sem retornar nada.

 

Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, entendi sua dúvida agora e peço desculpa por não ter verificado antes na especificação da classe Properties.

 

Bom seu problema acontece porque você faz o load do arquivo properties, escreve nele mas não manda gravar o arquivo alterado.

 

Porque isso ocorre, quando você faz o load, você carrega o arquivo em memória e faz o setProperties no arquivo em memória. e não grava as alterações no arquivo físico (arquivo que está no seu c:\caminhoDoArquivo).

 

Sendo assim, você necessida utilizar uma classe para fazer a escrita no arquivo físico.

 

abre.setProperty(Parametro,Valor);

abre.store(new FileOutputStream("c:\\bancoMySQL.ini"), "Este aquivo nao deve ser modificado");

 

Tenta colocar isso para ver se funciona sua aplicação.

 

Flwww, um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muuuuuuuuuuito obrigado =]

 

 

funciono, eu até tava vendo ontem que tinha isso Output no lugar de imput em exemplos que eu peguei, =]

vlw mesmo!!!!

 

Abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.