julianostr 20 de abr. de 2006
Vixi…
Postei besteira antes…
E agora não consigo matar o post…
Fabricio_Cozer_Marti 21 de abr. de 2006
Olá,
–Como respondi essa mesma dúvida em outra lista, vou fazer uma citação.
você deve obter o recurso pelo ClassLoader, assim:
sysprop.load(Configuracao.class.getClassLoader().getResourceAsStream("/minhaApp.properties"));
E para salvar novamente nesse .properties é necessário que você também acesse via ClassLoader, pois se você deseja que essas alterações sejam repercutidas em tempo de execução, também é necessário que seu container esteja no modo de reload=true, no tomcat, vc configura em um xml dentro da pasta Catalina/localhost/suaApp.xml, reloadable=“true”
Então, uma forma é você acessar o caminho via URL, utilizando:
URL url = Configuracao.class.getClassLoader().getResource("/minhaApp.properties");
File file = new File(
URLDecoder.decode(url.getFile(),"UTF-8")); //Ver o enconding, pode ser ISO..., ou outro ...
sysprop.setProperty(chave, valor);
FileOutputStream fos = new FileOutputStream(file);
sysprop.store(fos, "Arquivo alterado!.");
fos.close;
Algumas questões…
Qual o tipo de informação você está armazenando nesse .properties ?
Porque se for nomes de classes, etc, blza, pois o setProperty, utiliza a classe Hashtable, e nesse caso, como java tem formato unicode, se você colocar uma key, ou value, com acentos ou com caracteres especiais, lá no properties vai estar no formato unicode, se esse arquivo não for editável fora da aplicação, tudo bem, quando for ler, o java converte.
Por isso, a utilização de xml seria melhor, tem um projeto chamado castor - http://www.castor.org/ , ele é bem simples para trabalhar com persitência em xml.
julianostr 24 de abr. de 2006
Mas Fabrício, ao submeter uma página pra trocar o arquivo de properties, utilzando essa sua sugestão, não será reiniciada a aplicação e toda a session do usuário será “limpa” ??