Java - Dúvida: BufferedImage - Verificar se a imagem existe

7 respostas
V

Olá, galera! Estou aqui mais uma vez com a seguinte dúvida.
Tem uma pasta no meu projeto com imagens e eu estou usando o seguinte código para dizer onde está a imagem para a BufferedImage.

BufferedImage image = ImageIO.read(NOME_DA_CLASSE.class.getResourceAsStream(LOCALIZAÇÃO_NO_PACKAGE));

NOME_DA_CLASSE é bem claro e LOCALIZAÇÃO_NO_PACKAGE é mais ou menos isso: “/com/br/layout/images/imagem.png”, que seria a pasta.

A dúvida é como saber se a imagem que ele buscou existe e se foi “inserida” corretamente pela variável.

Valeu! :smiley:

7 Respostas

fabiocortolan

Não tenho como testar agora mas acredito q se o arquivo não existir será lançada uma exceção do tipo FileNotFoundException, vc pode usar um try catch para tratar essa exceção, ou se não for gerado nenhuma exceção, vc pode colocar uma condição verificando se a variável image é nula (acredito q será o caso se não for preenchida corretamente).

// Acho q dessa forma fica melhor
try {
    BufferedImage image = ImageIO.read(NOME_DA_CLASSE.class.getResourceAsStream(LOCALIZAÇÃO_NO_PACKAGE));
} catch (FilleNotFoundException ex) {
    // tratamento para o erro de arquivo inexistente
}

// ou, se não gerar exceção, pode verificar dessa forma
BufferedImage image = ImageIO.read(NOME_DA_CLASSE.class.getResourceAsStream(LOCALIZAÇÃO_NO_PACKAGE));

if (image == null) {
    // tratamento para erro
}
V

Isso já vai ajudar muito!
Mas não tem nem um método sem ser por exceções?

ViniGodoy

Na verdade, ele não lança exceção. Ele retorna null caso o recurso não exista.

Então é só dividir:

InputStream is = PFrame.class.getResourceAsStream(urlMenuLeft);
    if (is == null) {
        //Não existe
        return;
    }
    BufferedImage image = ImageIO.read(is);
fabiocortolan

Como o ViniGodoy disse q não lança exceção, a segunda opção seria a mais correta, utilize a condição if para testar se a variável image é nula.

V

BufferedImage img = null; try { img = ImageIO.read(PFrame.class.getResourceAsStream(urlMenuLeft)); }catch (FileNotFoundException e) { //Mostre o erro e faça alguma coisa! }catch(Exception e){ //Mostre o erro e faça alguma coisa! } if(img != null){ //Continue }else{ //DEU ERRO, AMIGO :/ }

É isso?

ViniGodoy

Não, é do jeito que eu postei. Sem o try catch.

V

Ahh é que tava sem uma parte do código, então não tinha entendido direito! Valeu! :smiley:

Criado 10 de julho de 2013
Ultima resposta 10 de jul. de 2013
Respostas 7
Participantes 3