检查图像URL是否存在

时间:2014-10-23 18:55:22

标签: java

我使用此功能检查是否存在网址图片:

public Boolean testImage(String url) {  
    try {  
        BufferedImage image = ImageIO.read(new URL(url));  
        //BufferedImage image = ImageIO.read(new URL("http://someimage.jpg"));  
        if (image != null) {  
            return true;
        } else {
            return false;
        }
    } catch (MalformedURLException e) {  
        // TODO Auto-generated catch block  
        System.err.println("URL error with image");  
        e.printStackTrace();  
    } catch (IOException e) {  
        System.err.println("IO error with image");  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }
    return null;  
}  

然后我称这种方法:

if (testImage("URLHERE")) {
    System.out.println("Yes");
} else {
    System.out.println("No");
}

问题是当我执行此代码时,我得到了这个结果:

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
IO error with image
javax.imageio.IIOException: Can't get input stream from URL!
    at javax.imageio.ImageIO.read(ImageIO.java:1369)

我只想得到是或否,不是错误,我知道在某些情况下,网址不是有效的,而是我要确定的内容。有可能吗?

由于

2 个答案:

答案 0 :(得分:2)

这是可能的。从两个异常块返回false

答案 1 :(得分:1)

问题是当你发现任何异常时,你没有返回一个布尔值。

试试这个:

public Boolean testImage(String url){  
        try {  
            BufferedImage image = ImageIO.read(new URL(url));  
            //BufferedImage image = ImageIO.read(new URL("http://someimage.jpg"));  
            if(image != null){  
                return true;
            } else{
                return false;
            }

        } catch (MalformedURLException e) {  
            // TODO Auto-generated catch block  
            System.err.println("URL error with image");  
            e.printStackTrace();
            return false;
        } catch (IOException e) {  
            System.err.println("IO error with image");  
            // TODO Auto-generated catch block  
            e.printStackTrace();
            return false;  
        }
        return false;  
    }