14

渡されたファイルが画像であるかどうかを確認したいのですが、そうでない場合は、ファイルが画像ではないことを示すメッセージを表示したいと考えています。

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ブロックの内容が実行されることを理解しています。では、なぜ実行されないのでしょうか。

ファイルが画像かどうかを確認する他の方法はありますか??

4

3 に答える 3

32

Javadocsによるとnull、ファイルを画像として読み取れない場合、 read は戻ります。

結果のストリームを読み取ることができると主張する登録済みの 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.");
}
于 2013-08-13T11:58:10.333 に答える
4

指定されたファイルを読み取ることができる登録済みのファイルが見つからない場合は、APIImageIO.read(...)が返すため、返された結果を簡単にテストできます。nullImageReadernull

于 2013-08-13T12:00:22.517 に答える
1

これを使用して拡張子を取得します。

String extension = "";

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

そして、必要に応じて条件を確認してください

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

等々

于 2013-08-13T11:54:17.587 に答える