java 判断文件类型
时间: 2023-09-11 07:04:21 浏览: 35
Java可以通过文件的后缀名来判断文件类型,也可以通过文件的魔数来判断文件类型。
1. 通过后缀名判断文件类型:
```java
import java.io.File;
public class FileType {
public static void main(String[] args) {
File file = new File("test.txt");
String fileName = file.getName();
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
if ("txt".equalsIgnoreCase(suffix)) {
System.out.println("text file");
} else if ("jpg".equalsIgnoreCase(suffix) || "jpeg".equalsIgnoreCase(suffix)) {
System.out.println("image file");
} else if ("doc".equalsIgnoreCase(suffix) || "docx".equalsIgnoreCase(suffix)) {
System.out.println("word file");
} else {
System.out.println("unknown file type");
}
}
}
```
2. 通过文件的魔数判断文件类型:
文件的魔数是指文件开头的一些特定字节,不同文件类型的魔数是不同的。通过读取文件的前几个字节来判断文件类型。
```java
import java.io.FileInputStream;
import java.io.IOException;
public class FileType {
public static void main(String[] args) throws IOException {
FileInputStream inputStream = new FileInputStream("test.txt");
byte[] bytes = new byte[4];
inputStream.read(bytes, 0, 4);
String fileHead = bytesToHexString(bytes);
if (fileHead.startsWith("FFD8FF")) {
System.out.println("image file");
} else if (fileHead.startsWith("89504E47")) {
System.out.println("image file");
} else if (fileHead.startsWith("47494638")) {
System.out.println("image file");
} else if (fileHead.startsWith("49492A00")) {
System.out.println("image file");
} else if (fileHead.startsWith("424D")) {
System.out.println("image file");
} else if (fileHead.startsWith("41433130")) {
System.out.println("audio file");
} else if (fileHead.startsWith("494433")) {
System.out.println("audio file");
} else if (fileHead.startsWith("52494646")) {
System.out.println("audio file");
} else {
System.out.println("unknown file type");
}
inputStream.close();
}
// 将字节数组转换为16进制字符串
private static String bytesToHexString(byte[] bytes) {
StringBuilder stringBuilder = new StringBuilder();
if (bytes == null || bytes.length <= 0) {
return null;
}
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
}
```