Java:用魔数精准读取文件类型及第三方库方案揭秘
在Java中,可以使用文件的魔数来准确地判断文件类型。文件的魔数是文件开头的一些特定字节,它们用于识别文件类型。下面是一个示例代码,可以通过读取文件的魔数来判断文件类型: ```java import java.io.FileInputStream; import java.io.IOException; public class FileTypeChecker { private static final byte[] PDF_MAGIC_NUMBER = {0x25, 0x50, x44, 0x46}; // PDF 文件的魔数 private static final byte[] PNG_MAGIC_NUMBER = {0x89, 0x50, 0x4E, 0x47}; // PNG 文件的魔数 // 你可以继续添加其他文件类型的魔数 public static void main(String[] args) throws IOException { String filePath = "path/to/your/file"; String fileType = getFileType(filePath); System.out.println(fileType); } public static String getFileType(String filePath) throws IOException { FileInputStream inputStream = new FileInputStream(filePath); byte[] magicNumber = new byte[4]; int bytesRead = inputStream.read(magicNumber); inputStream.close(); if (bytesRead == 4) { if (isMagicNumberMatch(magicNumber, PDF_MAGIC_NUMBER)) { return "PDF"; } else if (isMagicNumberMatch(magicNumber, PNG_MAGIC_NUMBER)) { return "PNG"; } // 可以添加其他文件类型的判断 } return "Unknown"; } public static boolean isMagicNumberMatch(byte[] magicNumber, byte[] expectedMagicNumber) { for (int i = 0; i < expectedMagicNumber.length; i++) { if (magicNumber[i] != expectedMagicNumber[i]) { return false; } } return true; } } ``` 这个示例代码只判断了PDF和PNG文件类型的魔数,并不全面。你可以参考文件格式规范,添加其他文件类型及其对应的魔数。 还可以使用第三方库如Apache Tika来更全面地判断文件类型。 ######[AI写代码神器 | 1623点数解答 | 2023-12-28 10:56:54]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)400
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)380
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)358
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)420
- MySQL 数据库操作:用德鲁伊连接池和 Spring JDBC 实现 MVC 架构下 Student 表操作及事务测试全解析(字节豆包 | 1115点数解答 | 2025-03-19 11:17:31)302
- Spring JDBC+德鲁伊连接池:MVC架构下MySQL学生表查询、事务验证及代码实现全解析(DeepSeek | 1275点数解答 | 2025-03-19 11:21:32)289
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)322
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1196
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)330
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)350
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)410
- Python 利用 win32com 库:将 Excel 转换为 A4 横向 PDF 并单独打印首列(字节豆包 | 507点数解答 | 2025-03-10 15:48:12)319