介绍
文件的真实类型如何利用java进行判断?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
具体代码如下:
包com.zhuifeng.util.excel; 进口java.io.FileInputStream; 进口java.io.IOException; 进口java.util.HashMap;/* * * @author guoxk * *类描述:获取和判断文件头信息 * |——文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。 * |——头文件作为一种包含功能函数,数据接口声明的载体文件,用于保存程序的声明(声明),而定义文件用于保存程序的实现(实现)。 * |——为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。 * */公开课CheckExcelFileTypeUtil {//缓存文件头信息——文件头信息 公共静态最终HashMap<字符串,String>mFileTypes=new HashMap<字符串,String> (); 静态{//图片 mFileTypes.put (“FFD8FF",“jpg"); mFileTypes.put (“89504 e47",“png"); mFileTypes.put (“47494638”,“gif"); mFileTypes.put (“49492 a00",“tif"); mFileTypes.put (“424 d",“bmp");//mFileTypes.put (“41433130”,“dwg");//CAD mFileTypes.put (“38425053”,“psd"); mFileTypes.put (“7 b5c727466",“rtf");//日记本 mFileTypes.put (“3 c3f786d6c",“xml"); mFileTypes.put (“68746 d6c3e",“html"); mFileTypes.put (“44656 c69766572792d646174653a",“eml");//邮件 mFileTypes.put (“D0CF11E0",“doc"); mFileTypes.put (“D0CF11E0",“xls");//excel2003版本文件 mFileTypes.put (“5374616 e64617264204a",“mdb"); mFileTypes.put (“252150532 d41646f6265",“ps"); mFileTypes.put (“255044462 d312e",“pdf"); mFileTypes.put (“504 b0304",“docx"); mFileTypes.put (“504 b0304",“xlsx");//excel2007以上版本文件 mFileTypes.put (“52617221”,“rar"); mFileTypes.put (“57415645”,“wav"); mFileTypes.put (“41564920”,“avi"); mFileTypes.put (“2 e524d46",“rm"); mFileTypes.put (“000001 ba",“mpg"); mFileTypes.put (“000001 b3",“mpg"); mFileTypes.put (“6 d6f6f76",“mov"); mFileTypes.put (“3026 b2758e66cf11",“asf"); mFileTypes.put (“4 d546864",“mid"); mFileTypes.put (“1 f8b08",“gz"); }/* * * @author guoxk * *方法描述:根据文件路径获取文件头信息 * @param filePath文件路径 * @return文件头信息 */getFileType公共静态字符串(字符串filePath) {//System.out.println (getFileHeader (filePath));//System.out.println (mFileTypes.get (getFileHeader (filePath))); 返回mFileTypes.get (getFileHeader (filePath)); }/* * * @author guoxk * *方法描述:根据文件路径获取文件头信息 * @param filePath文件路径 * @return文件头信息 */getFileHeader公共静态字符串(字符串filePath) { FileInputStream=零; 字符串值=https://www.yisu.com/zixun/null; 尝试{ 是=new FileInputStream (filePath); byte [] b=新的字节[4];/* * int read()从此输入流中读取一个数据字相关性节阅读(byte [] b)从此输入流中将最多b.length *个字节的数据读入一个字节数组中,int读(byte [] b, int, int len) *从此输入流中将最多len个字节的数据读入一个字节数组中。 */是多少。读(b, 0, b.length); 值=bytesToHexString (b); }捕捉(异常e) { 最后}{ 如果(零!=){ 尝试{ is.close (); }捕捉(IOException e) { } } } 返回值; }/* * * @author guoxk * *方法描述:将要读取文件头信息的文件的字节数组转换成字符串类型表示 * @param src要读取文件头信息的文件的字节数组 * @return文件头信息 */私有静态字符串bytesToHexString (byte [] src) { StringBuilder builder=new StringBuilder (); 如果(src==null | | src。长度<=0){ 返回null; } 字符串高压; for (int i=0;我文件的真实类型如何利用java进行判断