[Resolvido] Problema com cache de Imagem ao substituir

Boa tarde!!
Meu primeiro post no GUJ

Estou com um problema que não está tendo solução até o momento
Tenho um Jframe de cadastro de usuário.
Esse JFrame é um controle de usuários com imagem 32x32 png foto.
Ná hora da inserção tudo normal, pois guardo a path no banco e quando preciso busco novamente no banco o path, e instâncio na label

Dúvida
O problema é na hora da Alteração.(substituir o arquivo na minha pasta imagens do programa)
pelo JFileChosser busco a imagem, coloco num label, ao clicar em alterar quero qe ele substitua o arquivo antigo do usuario e já fique disponível.
Até consigui fazer, excluindo o arquivo velho, importando a classe CompareTo() da Api FileChannel recebendo o path do arquivo novo e o lugar onde ele vai substituir o arquivo por parametro, mas ao referenciar o path no label depois de pronto, ele mostra a imagens antiga ainda em cache.

Obs: ao acessar pelo windows a mudança foi executada

Espero ter explicado corretamente. Vou deixar a classe de alteração

[code] File fileAntigo = new File(“src”+usuario.getImagenUrl);
//Retira a imagem da label
frameCadastroUsuario.getLblFoto().setIcon(null);
//Deleta o imagem
fileAntigo.delete();
//Nova imagem do usuario
File origem = new File(frameCadastroUsuario.getTxtUrl().getText());
//Destino é nome da imagem
File destino = new File(“src/imagens/”+usuario.getUsuario()+".png");
FileInputStream fisOrigem = null;
FileOutputStream fisDestino = null;
try
{
fisOrigem = new FileInputStream(origem);
fisDestino = new FileOutputStream(destino);
}
catch(FileNotFoundException ex)
{
Logger.getLogger(PegarCaminhoArquivo.class.getName()).log(Level.SEVERE, null, ex);
}
FileChannel fcOrigem = fisOrigem.getChannel();
FileChannel fcDestino = fisDestino.getChannel();
try
{
//Copiando a nova imagem do usuario para o destino Pasta imagens
fcOrigem.transferTo(0, fcOrigem.size(), fcDestino);

                            fisOrigem.close();
                            fisDestino.close();
                        }
                        catch(IOException ex)
                        {
                            Logger.getLogger(ActionInserirUsuario.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        }[/code]

up

welton, eu nunca vi cache nesse caso, se você tentar uma imagem com nome diferente, esse refresh da mesma maneira, funciona?

Exatamente, funciona normalmente. Somente quando é o mesmo path

up
Alguem já fez um sistema com imagens aee?
Alguém pode passar outra api para substituir imagens?

Cara, pra caso de imagens, eu prefiro usar a API ImageIO direto mesmo, ao invés de usar esses streams:


imagem = ImageIO.read(fileAntigo);
ImageIO.write(imagem,"png", file);

Vou testar a noite e ver se da certo…

Muito abrigado a todos por enquanto e retorno se der certo ou não.

Problema não resolvido

Continua apontando para a imagem que não existe mais mesmo excluindo antes.

estou referenciando no label assim.

ActionMostrarNaTela()

  [code]frameCadastroUsuario.getLblFoto().setIcon(new ImageIcon(getClass().getResource(usuario.getImagenFoto())));
  [/code]

Será mesmo alguém tem uma explicação para isso?

Agradeco a to dos que ajudaram…

Problema resolvido…

na hora de referenciar a imagem do usuario fiz assim.

frameCadastroUsuario.getLblFoto().setIcon(new ImageIcon(ImageIO.read(file)));
Somente isso