要可靠地检测文件类型,你可以使用Java的文件魔数(Magic Number)来实现。文件魔数是文件开头的几个字节,用于标识文件的类型。 以下是一个简单的Java代码示例,演示如何通过比较文件的魔数来判断文件类型: ```java import java.io.FileInputStream; import java.io.IOException; public class FileTypeChecker { public static String getFileType(String filePath) { try (FileInputStream fis = new FileInputStream(filePath)) { byte[] buffer = new byte[8]; fis.read(buffer, 0, buffer.length); if (isJPEG(buffer)) { return "JPEG"; } else if (isPNG(buffer)) { return "PNG"; } else if (isGIF(buffer)) { return "GIF"; } else if (isPDF(buffer)) { return "PDF"; } else { return "Unknown"; } } catch (IOException e) { e.printStackTrace(); return "Error"; } } private static boolean isJPEG(byte[] buffer) { // JPEG 文件的魔数是 0xFFD8FF return buffer[] == (byte) 0xFF && buffer[1] == (byte) 0xD8 && buffer[2] == (byte) 0xFF; } private static boolean isPNG(byte[] buffer) { // PNG 文件的魔数是 0x89504E47 return buffer[0] == (byte) x89 && buffer[1] == (byte) 0x50 && buffer[2] == (byte) 0x4E && buffer[3] == (byte) 0x47; } private static boolean isGIF(byte[] buffer) { // GIF 文件的魔数是 "GIF" return buffer[0] == (byte) x47 && buffer[1] == (byte) 0x49 && buffer[2] == (byte) 0x46 && buffer[3] == (byte) 0x38; } private static boolean isPDF(byte[] buffer) { // PDF 文件的魔数是 "%PDF" return buffer[0] == (byte) x25 && buffer[1] == (byte) 0x50 && buffer[2] == (byte) 0x44 && buffer[3] == (byte) 0x46; } public static void main(String[] args) { String filePath = "path/to/your/file"; String fileType = getFileType(filePath); System.out.println("File type: " + fileType); } } ``` 你可以根据需要扩展更多的文件类型和对应的魔数判断逻辑。注意,这种方法只能判断文件类型的可能性,不能保证100% 准确。对于可疑的或不受信任的文件,还需要进行更详细的文件格式检查和验证。 [2023-12-28 11:24:18 | AI写代码神器 | 2002点数解答]