如何检查文件是否是图像

时间:2013-08-13 11:50:30

标签: java image exception

我想检查传递的文件是否是图像,如果不是,我想显示一条消息,指出该文件不是图像。

try{
    Image img = ImageIO.read(new File(name));
}catch(IOException ex)
{
    valid=false;
    System.out.println("The file" + name + "could not be opened, it is not an image");
}

当文件(由name引用)不是图像时,有效版本未设置为false,为什么会发生这种情况? 我应该更改例外的类型吗?我已经阅读了关于try-catch的内容,据我所知,如果ImageIO.read失败并且异常的类型是IOException,将执行catch块的内容。那为什么不执行呢?

是否还有其他方法可以检查文件是否为图像?

3 个答案:

答案 0 :(得分:31)

根据Javadocs,如果文件无法作为图像读取,则读取返回null

  

如果没有已注册的ImageReader声称能够读取结果   流,null被返回。

因此,您的代码应如下所示:

try {
    Image image = ImageIO.read(new File(name));
    if (image == null) {
        valid = false;
        System.out.println("The file"+name+"could not be opened , it is not an image");
    }
} catch(IOException ex) {
    valid = false;
    System.out.println("The file"+name+"could not be opened , an error occurred.");
}

答案 1 :(得分:4)

根据API ImageIO.read(...),如果未找到能够读取指定文件的已注册null,则返回ImageReader,因此您只需测试null的返回结果。

答案 2 :(得分:1)

使用它来获取扩展名:

String extension = "";

int i = fileName.lastIndexOf('.');
if (i > 0) {
    extension = fileName.substring(i+1);
}

并根据需要检查条件

if(extension=="jpg"){
//your code
}

等等