如何检查文件是否为图像

2022-09-03 17:17:24

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

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");
}

当文件(引用者 )不是有效图像时,未设置为 ,为什么会发生这种情况?我是否应该更改异常的类型?我已经阅读了有关 try-catch 的信息,据我所知,如果 ImageIO.read 失败并且异常的类型为 IOException,则将执行 catch 块的内容。那么为什么它没有执行?namefalse

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


答案 1

根据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.");
}

答案 2

根据API返回,如果没有找到能够读取指定文件的注册文件,那么您可以简单地测试返回的结果。ImageIO.read(...)nullImageReadernull


推荐