java判断文件是否图片_java怎么判断文件是否是图片
时间: 2023-12-04 15:06:05 浏览: 168
Java 判断文件是否为图片可以通过文件的后缀名、文件的魔数或者使用第三方库来实现。
1. 通过文件后缀名判断
通常情况下,图片文件的后缀名都是特定的,例如 `.jpg`, `.png`, `.gif` 等等,可以通过判断文件的后缀名是否为这些类型来判断文件是否为图片。
示例代码如下:
```java
public static boolean isImageBySuffix(String fileName) {
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
if ("jpg".equalsIgnoreCase(suffix) || "png".equalsIgnoreCase(suffix)
|| "gif".equalsIgnoreCase(suffix) || "bmp".equalsIgnoreCase(suffix)) {
return true;
}
return false;
}
```
2. 通过文件魔数判断
文件魔数是文件头部的一些固定字节,可以用来标识文件的类型。不同类型的文件魔数不同,可以通过读取文件的头部字节来判断文件类型。
示例代码如下:
```java
public static boolean isImageByMagicNumber(String filePath) throws IOException {
FileInputStream fis = new FileInputStream(filePath);
byte[] bytes = new byte[8];
fis.read(bytes, 0, 8);
fis.close();
// JPEG、PNG、GIF、BMP、TIFF等文件格式的魔数
if ((bytes[0] == (byte) 'G' && bytes[1] == (byte) 'I' && bytes[2] == (byte) 'F')
|| (bytes[0] == (byte) 0xff && bytes[1] == (byte) 0xd8)
|| (bytes[0] == (byte) 0x89 && bytes[1] == (byte) 'P' && bytes[2] == (byte) 'N' && bytes[3] == (byte) 'G')
|| (bytes[0] == (byte) 'B' && bytes[1] == (byte) 'M')
|| (bytes[0] == (byte) 'I' && bytes[1] == (byte) 'I' && bytes[2] == (byte) 'C' && bytes[3] == (byte) 'O')) {
return true;
}
return false;
}
```
3. 使用第三方库判断
可以使用第三方库来判断文件是否为图片,例如 Apache Commons IO 库中的 `FilenameUtils#isExtension` 方法。
示例代码如下:
```java
public static boolean isImageByThirdParty(String fileName) {
String[] extensions = {"jpg", "jpeg", "png", "gif", "bmp"};
return FilenameUtils.isExtension(fileName.toLowerCase(), extensions);
}
```
以上是三种判断文件是否为图片的方法,可以根据具体需求选择。
阅读全文