| package com.matrix.core.tools; | 
|   | 
| import java.io.File; | 
| import java.io.FileInputStream; | 
| import java.io.IOException; | 
| import java.io.InputStream; | 
| import java.util.List; | 
|   | 
| import org.apache.commons.io.IOUtils; | 
|   | 
| /** | 
|  * 文件类型判断工具 | 
|  *  | 
|  * @author JIANGYOUYAO | 
|  * @email 935090232@qq.com | 
|  * @date 2017年12月12日 | 
|  */ | 
| public class FileTypeUtil { | 
|   | 
|     /** | 
|      * 通过文件头的特定字符 校验文件是否为列表中的一种 | 
|      *  | 
|      * @author JIANGYOUYAO | 
|      * @email 935090232@qq.com | 
|      * @date 2017年12月20日 | 
|      * @param file | 
|      * @param fileTypes | 
|      * @return | 
|      * @throws IOException | 
|      */ | 
|     public static boolean checkFileType(File file, List<FileType> fileTypes) throws IOException { | 
|          | 
|         FileInputStream stream = new FileInputStream(file); | 
|         byte[] data = new byte[28]; | 
|         IOUtils.readFully(stream, data); | 
|         String fileHead = bytes2hex(data).toUpperCase(); | 
|         for (FileType fileType : fileTypes) { | 
|             if (fileHead.startsWith(fileType.getValue())) { | 
|                 return true; | 
|             } | 
|         } | 
|         return false; | 
|     } | 
|      | 
|     public static boolean checkFileType(InputStream stream , List<FileType> fileTypes) throws IOException { | 
|         byte[] data = new byte[28]; | 
|         IOUtils.readFully(stream, data); | 
|         String fileHead = bytes2hex(data).toUpperCase(); | 
|         for (FileType fileType : fileTypes) { | 
|             if (fileHead.startsWith(fileType.getValue())) { | 
|                 return true; | 
|             } | 
|         } | 
|         return false; | 
|     } | 
|      | 
|   | 
|     private static String bytes2hex(byte[] b) { | 
|         StringBuffer hexStr = new StringBuffer(); | 
|         for (int i = 0; i < b.length; i++) { | 
|             String hex = Integer.toHexString(b[i] & 0xFF); | 
|             if (hex.length() == 1) { | 
|                 hex = '0' + hex; | 
|             } | 
|             hexStr.append(hex); | 
|         } | 
|         return hexStr.toString(); | 
|     } | 
|      | 
|      | 
|     /** | 
|      * 获取文件扩展名称 | 
|      *  | 
|      * @author JIANGYOUYAO | 
|      * @email 935090232@qq.com | 
|      * @date 2017年12月20日 | 
|      * @param file | 
|      * @return | 
|      */ | 
|     public static String getFileExtName(File file) { | 
|         String fileName = file.getName(); | 
|         String prefix = fileName.substring(fileName.lastIndexOf(".") ); | 
|         return prefix; | 
|     } | 
| } |