Bom, vc ja lei o arquivo, inclua as propriedades que vc quer e depois crie um OutpuStream e use o metodo storeToXML(OutputStream,String) da classe properties mesmo.
Bom, vc ja lei o arquivo, inclua as propriedades que vc quer e depois crie um OutpuStream e use o metodo storeToXML(OutputStream,String) da classe properties mesmo.[/quote]
Como assim?
Como ficaria isso no meu código?
Aí, Brunão, valeu pela força…
Fiz baseado na sua dica e funfou beleza agora…
Na classe de login na aplicação fiz assim:
prop.propSessao.setProperty("Cod_Usuario", usuario);
prop.gravarSessao();
E na classe que criei só para manipulação de arquivos .properties, fiz assim:
public void gravarSessao() throws FileNotFoundException, IOException {
File file = new File("/opt/DoctorPack/LinkelMed/src/doctorpack/sessoes.properties");
FileOutputStream fos = new FileOutputStream(file);
propSessao.store(fos, "Configurações de Sessão");
fos.close();
}
Nota-se que tive que colocar o caminho inteiro do diretório onde se encontra o arquivo .properties…
Será que não tem uma forma de fazer para ele reconhecer o diretório da aplicação não?
Isso quer dizer que ao final da minha aplicação, quando eu for instalar em outra máquina eu teria que modificar esse diretório???
Tentei fazer como na leitura do arquivo, mas não rolou não…
Pô, tenta criar o path para o arquivo usando o URL… assim:
URL url = this.getClass().getResource("/projeto/arquivo.properties");
URI uri = uri.toUri();
File file = new File(uri.getPath());/// faz uns testes, o caminho para o arquivo fica nesta classe.. testa com uns System.out pra ver qual metodo te retorna ele....
Pô, tenta criar o path para o arquivo usando o URL… assim:
URL url = this.getClass().getResource("/projeto/arquivo.properties");
URI uri = uri.toUri();
File file = new File(uri.getPath());/// faz uns testes, o caminho para o arquivo fica nesta classe.. testa com uns System.out pra ver qual metodo te retorna ele....[/quote]
Cara, sua dica foi muito boa.
Não funcionou fazendo exatamente como você disse mas fiz assim (abaixo) e funcionou relativamente:
public void gravarSessao() throws FileNotFoundException, IOException {
URL url = this.getClass().getResource("/doctorpack/sessoes.properties");
File file = new File(url.getPath());
FileOutputStream fos = new FileOutputStream(file);
propSessao.store(fos, " INFORMACOES DE ABERTURA DE SESSAO");
fos.close();
// e para imprimir na tela a URL capturada...
System.out.println(url.getPath());
}
A saída imprimida na tela pelo System.out.println(), retornou o seguinte esquema de diretório…
[color=red]/opt/DoctorPack/LinkelMed/build/classes/doctorpack/sessoes.properties[/color]
Entrei então no diretório e lá estava a gravação que solicitei, provando que realmente tinha funcionado.
O problema é que estou lendo do diretório [color=red]/opt/DoctorPack/LinkelMed/src/doctorpack/sessoes.properties[/color]
e nesse diretório o arquivo ficou intacto.
Como eu resolvo esse problema?
Eu preciso que este arquivo esteja disponível na distribuição .jar da minha aplicação sem eu ter que cria-lo manualmente.
Qual sistema de diretório eu devo usar?
BOm, então funcionou legal, o que vc não esta entendendo é como sua aplicação é executada, seguinte, vc deve estar usando uma IDE, netbeans, que coloca seus fontes num diretorio e os arquivos binários, que são os .class, .properties, que estão dentro do diretorio de sources, dentro do “classes”, quando sua aplicação tá rodando o “src” não existe pra jvm… só o “classes”, pra vc fazer um teste dê um refresh no seu projeto, vá pelo prompt em "/opt/DoctorPack/LinkelMed/build/classes/doctorpack/sessoes.properties " e apague o arquivo, e verá que sua aplicação passará a não achar mais ele… saca??
Bom, eu entendi o que vc quer fazer, pra te falar que falta um tico, mas vc não está atentando para o seguinte, se este .properties estiver dentro do jar vc não vai conseguir altera-lo.
Pois bem, quer dizer que não dá para esconder os arquivos .properties?
Gerei o .jar da minha aplicação para ver como ficaria e no momento em que mando gravar no .properties (executando minha aplicação a partir do .jar e não da IDE) a aplicação fecha.[/color] [color=red]Como eu faço então para distribuir a aplicação com os arquivos .properties?[/color]
[color=blue]
Preciso muito de mais essa dica, rsrs…
Um abraço.[/color]
Como assim, brother???
Coloco esse código onde?
Sei que é meio tosco perguntar isso, por imaginar que seja muito elementar, mas tenho pouco tempo de java, rsrs…
Tipo, criar o .properties em tempo de execução?
Ou entendi errado?
Quero que estejam disponíveis esses properties na versão de distribuição (que irão sem o código fonte)…
Me dá uma luz aííííííííi!!!
experimente colocar o properties em um pacote da sua aplicacao.
Assim podera obte-lo facilmente:
public static final String PROPS_FILE = "app/config/props.properties";
public static Properties loadProperties() throws Exception {
Properties properties = new Properties();
try {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream file = loader.getResourceAsStream( PROPS_FILE );
if (file == null) {
throw new Exception("Não foi possível localizar o arquivo de properties!");
}
properties.load(file);
} catch (Exception e) {
//
}
return properties;
}
[]'s[/quote]
assim ele não irá achar o arquivo…
setar só o projeto, e seu pacote como diretorio… testei isso daqui e não foi…
acho o da URL mais completo, quer dizer… não conheço Threads… :oops:
dessa maneira, o properties é encontrado sim.
Acho q nao fui claro.
É necessário colocar o poperties em um pacote da app, e referencia-lo de forma relativa, nao incluindo o nome da pasta q contem o programa.
Por exe, suponhamos que as classes estao em: br/com/minhaempresa/application,
e o properties em br/com/minhaempresa/config