Ajuda com arquivo properties

4 respostas
cris2002

Olá pessoal do guj, estou com um problema com esse tipo de arquivo, minha aplicação desktop tem um arquivo properties onde são armazenados o IP de um banco de dados MySQL junto com a PORTA/LOGIN/SENHA do Mysql para fazer a conexão do banco com o software. Até ai tudo bem, o problema é que quando complilo o projeto e gero o arquivo .jar, o método de escrever no arquivo properties não está funcionando mais!!!
executando o software no netbeans ele roda e escreve normalmente, mas o .jar não!

Meus métodos de manipulação do arquivo properties

public void getConfig(){
        InputStream fis = this.getClass().getResourceAsStream("conec.properties");
        Properties props = new Properties();
        try {
            props.load(fis);
            fis.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        String IP = props.getProperty("ip.server");
        String PORTA = props.getProperty("port.server");
        String LOGIN = props.getProperty("login.server");
        String SENHA = props.getProperty("pass.server");
        this.ip=IP;
        this.porta = PORTA;
        this.login = LOGIN;
        this.senha = SENHA;
    }
    
    public void setConfig(String ip, String porta, String login, String senha){
        InputStream fis = this.getClass().getResourceAsStream("conec.properties");
        Properties props = new Properties();
        try {
            props.load(fis);
            fis.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        props.setProperty("ip.server",ip);
        props.setProperty("port.server",porta);
        props.setProperty("login.server",login);
        props.setProperty("pass.server",senha);      
        
        try {
            props.store(new FileOutputStream("src/VD1/conec.properties"), "Configurações do arquivo conec.properties");
        } catch (IOException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

se puderem me ajudar eu agradeço!

4 Respostas

StriderMGBR

Oi. Eu fiz uma aplicação desktop a pouco tempo, utilizando .properties e tive esse mesmo problema, a solução que eu encontrei foi de colocar o arquivo .properties na mesma pasta do .jar, ou seja, ele nao esta dentro do arquivo jar.

Creio que deve ter alguma outra solução, essa foi a unica que encontrei, alias, nem procurei outra solução. hehehe.

Att.

cris2002

Mas se colocar o arquivo fora do .jar, como eu pego o caminho pra ler a escrever no arquivo?

cris2002

mas se for colocar o arquivo fora do .jar, como eu pego o caminho dele pra escrever e ler?

C

cara de certo é problema do jeito que você está passando o caminho para buscar o arquivo

InputStream fis = this.getClass().getResourceAsStream("conec.properties");
tenta
InputStream fis = this.getClass().getResourceAsStream("/conec.properties");
eu tenho uma classe que você escolhe aonde vc quer buscar o arquivo está ai embaixo
private FileInputStream fis = null;

	// stream para gravar arquivo
	private FileOutputStream fos = null;

	private File fFile = new File("config.properties");

	// properties
	private Properties props = new Properties();


	// create a new file chooser
	private JFileChooser fc = new JFileChooser(new File("."));

	private FileFilter filefilter = new FileFilter();

	/**
	 * Carrega Arquivo de Configurações 
	 * 
	 */
	public boolean loadConfig() {

		fc.setDialogTitle("Open File Configuration");

		// Choose only files, not directories
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);

		// Start in current directory
		fc.setCurrentDirectory(new File("."));

		// Set filter for Java source files.
		fc.setFileFilter(filefilter);

		// Now open chooser
		int result = fc.showOpenDialog(fc);
		if (result == JFileChooser.APPROVE_OPTION) {
			try {
				fFile = fc.getSelectedFile();
				fis = new FileInputStream(fFile);
				// carrega arquivo de configuracao
				props.load(fis);
				// fecha stream
				fis.close();			
				return true;
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				JOptionPane.showMessageDialog(null, "file not Found"), "Erro", 1);
				e.printStackTrace();
				return false;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return false;

	}







//classe file filter

public class FileFilter extends javax.swing.filechooser.FileFilter{
	 /** Filter to work with JFileChooser to select properites configuration file types. **/

	public boolean accept(File f) {
		   return f.getName ().toLowerCase ().endsWith (".properties")
	          || f.isDirectory ();
		
	}

	public String getDescription() {
		// TODO Auto-generated method stub
		return "Configuration File (*.properties)";
	}
}

ai  na outra classe pra carregar os arquivos eu invoquei
[code]
if (settings.loadConfig()) {
//codigo 
}
Criado 1 de dezembro de 2007
Ultima resposta 1 de dez. de 2007
Respostas 4
Participantes 3