| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:09:19
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
Opa
Estou usando a api 'Properties' para alterar as configurações de um arquivo .properties, mas quando eu dou o setProperty, ele aparente escrever e em seguido eu rodo o getProperty e ele mostra o valor que eu setei no setProperty e quando eu abro o arquivo .properties, não tem nada alterado!
|
talvez esteja tão vazio =o |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:10:07
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
Voçê tem que salvar o arquivo....
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:13:42
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
como que faço isso?
se eu usar FileOutputStream, não vai resolver meu problema pq terei que escrever todo arquivo novamente e eu só quero mudar uma propriedade!
|
talvez esteja tão vazio =o |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:32:11
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se quer usar um banco de dados, use um banco de dados.
Quando você usa "Properties", que é um arquivo-texto, você tem de recuperar todas as propriedades e salvar todas as propriedades, mesmo que apenas uma propriedade seja modificada.
Isso é inerente a arquivos-texto.
O formato XML também tem esse problema.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:47:42
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
então eu preciso criar um FileOutputStream e dar write para tudo que já existe no arquivo?
edit:
adicionei a linha
Ele imprime de novo tudo, mas fica faltando os comentários e ele imprime fora de ordem..tem como imprimir sem mudar a ordem e sem tirar os comentários?
|
talvez esteja tão vazio =o |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 14:58:42
|
Kknd
JavaEvangelist
![[Avatar]](/images/avatar/fc8956a9c5bb091ed488e75e3df5ae4f.png)
Membro desde: 13/10/2006 10:54:18
Mensagens: 338
Offline
|
Pra salvar vc tem que usar o método store(). No meu caso:
|
.: Temple Of Shadows :. Linux User #435550
OProj |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 15:00:10
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Engraçado, não foi você mesmo que colocou uma solução aqui?
http://www.guj.com.br/posts/list/52745.java#277553
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 15:10:56
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
sim, mas eu não tinha visto que ele não estava alterando no próprio .properties
tem alguma idéia?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 15:11:02
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Só para botar mais lenha na fogueira.
O problema de um arquivo "properties" é que os programadores acham que ele é exatamente um arquivo ".ini" - por exemplo, você poderia pôr comentários sem que eles se percam na atualização do arquivos, e a ordem das chaves não se alteraria.
O Windows tem uma API - WritePrivateProfileString - que dá a impressão de "escrever diretamente na linha". Na verdade ele lê o arquivo inteirinho, grava a nova propriedade no lugar adequado, e grava o arquivo sobre o arquivo original.
Um arquivo Properties, em contrapartida:
- Não preserva os comentários que você porventura tenha escrito;
- O mecanismo para gravação e leitura é explícito, em vez de ser implícito como no Windows.
Eu tive de criar uma subclasse de Properties que preservasse os comentários e a ordem das propriedades, para evitar esses problemas que a implementação padrão tem.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 15:12:55
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
Kknd wrote:Pra salvar vc tem que usar o método store(). No meu caso:
save ou store vão dar no mesmo..save está deprecated..
|
talvez esteja tão vazio =o |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2007 15:15:35
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
thingol wrote:Só para botar mais lenha na fogueira.
O problema de um arquivo "properties" é que os programadores acham que ele é exatamente um arquivo ".ini" - por exemplo, você poderia pôr comentários sem que eles se percam na atualização do arquivos, e a ordem das chaves não se alteraria.
O Windows tem uma API - WritePrivateProfileString - que dá a impressão de "escrever diretamente na linha". Na verdade ele lê o arquivo inteirinho, grava a nova propriedade no lugar adequado, e grava o arquivo sobre o arquivo original.
Um arquivo Properties, em contrapartida:
- Não preserva os comentários que você porventura tenha escrito;
- O mecanismo para gravação e leitura é explícito, em vez de ser implícito como no Windows.
Eu tive de criar uma subclasse de Properties que preservasse os comentários e a ordem das propriedades, para evitar esses problemas que a implementação padrão tem.
Sempre com ótimas explicações thingol!
Vou voltar para a idéia inicial que era escrever o arquivo novamente! rs
|
|
|
 |
|
|