Как проверить, является ли файл изображением
Я хочу проверить, является ли файл переданным, и если нет, я хочу показать сообщение, указывающее, что файл не является изображением.
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. Так почему его не выполнили?
Есть ли другой способ проверить, является ли файл изображением?
Ответы
Ответ 1
Согласно Javadocs, read возвращает 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(...)
возвращает null
, если не найден зарегистрированный ImageReader
, способный читать указанный файл, поэтому вы можете просто проверить полученный результат для null
.
Ответ 3
Используйте это, чтобы получить расширение:
String extension = "";
int i = fileName.lastIndexOf('.');
if (i > 0) {
extension = fileName.substring(i+1);
}
И проверьте условия как и хотите
if(extension=="jpg"){
//your code
}
и т.д.