文件类型判断
package javaapplication25; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.apache.commons.io.IOUtils; /** * * @author YSHY */ public class FileTypeUtil { public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>(); private FileTypeUtil(){} static{ getAllFileType(); //初始化文件类型信息 } //doc,docx,xls,xlsx,pat,et,ett,wpt,ofd,ppt,pdf,pptx,wps private static void getAllFileType(){ FILE_TYPE_MAP.put("doc", "D0CF11E0"); FILE_TYPE_MAP.put("docx", "504B0304"); FILE_TYPE_MAP.put("xls", "D0CF11E0"); FILE_TYPE_MAP.put("xlsx", "504B0304"); FILE_TYPE_MAP.put("et", "D0CF11E0"); FILE_TYPE_MAP.put("ett", "D0CF11E0"); FILE_TYPE_MAP.put("wpt", "D0CF11E0"); FILE_TYPE_MAP.put("ofd", "504B0304"); FILE_TYPE_MAP.put("ppt", "D0CF11E0"); FILE_TYPE_MAP.put("pdf", "255044462D312E"); FILE_TYPE_MAP.put("pptx", "504B0304"); FILE_TYPE_MAP.put("wps", "D0CF11E0"); FILE_TYPE_MAP.put("pat", "3B20E8BF99E"); //待核实 } /** * 根据文件流获取文件类型并判断是否存在 * @param fileExeType * @param is * @return */ public static final boolean adjustFileType(String fileExeType, InputStream is) throws IOException { byte[] b = IOUtils.toByteArray(is); String filetypeHex = String.valueOf(getFileHexString(b)); System.out.println(fileExeType+",filetypeHex=>"+filetypeHex.toUpperCase()); return filetypeHex.toUpperCase().startsWith(FILE_TYPE_MAP.get(fileExeType)); } public static final String getFileHexString(byte[] b) { StringBuilder stringBuilder = new StringBuilder(); if (b == null || b.length <= 0) { return null; } for (int i = 0; i < b.length; i++) { int v = b[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); if(i>20){ break; } } return stringBuilder.toString(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2020-07-29 springboot mybatis-plus 多数据源
2019-07-29 对于之前已经push的项目增加.gitignore配置文件不起作用的处理