首页 > 其他分享 >文件类型判断

文件类型判断

时间:2024-07-29 16:18:31浏览次数:8  
标签:MAP 判断 D0CF11E0 static FILE put 文件类型 TYPE

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();    
    }    
}

 

标签:MAP,判断,D0CF11E0,static,FILE,put,文件类型,TYPE
From: https://www.cnblogs.com/yshyee/p/18330353

相关文章

  • java判断ip地址是否正确,使用hutool工具判断ip地址
    1.导入hutool的maven依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.直接复制一下代码importcn.h......
  • 2024-07-29 如何判断自定义组件中的slot是否被传入值==》defineSlots或this.$slots
    假如你的自定义组件是这样:<template><div><button:class="`btn-${type}`"><slot></slot></button></div></template><script>exportdefault{name:"tButt......
  • C++ 中缀表达式判断合法性并求值
    中缀表达式值题目描述输入一个中缀表达式(由0−9组成的运算数、加+减−乘∗除/四种运算符、左右小括号组成。注意“−”也可作为负数的标志,表达式以“@”作为结束符)。判断表达式是否合法,如果不合法,请输出“NO”;否则请把表达式转换成后缀形式,再求出后缀表达式的值并......
  • 判断链表是否有环
    题目要求给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如......
  • 可逆矩阵的概念、定理、判断条件和性质(线性代数基础)
    可逆矩阵的概念、定理、判断条件和性质可逆矩阵的概念定义:设AAA为n......
  • Python科研武器库 - 文件/路径操作 - 判断路径是否存在
    使用场景:在科研中,用Python处理数据的一个核心目的是批量处理,批量处理节省了研究者大量的时间和精力,不然,还不如手动一个个地去处理。批量处理通常要求数据整体较为规整,能够进行统一的处理操作,但实际数据中总存在一些不规则的样本,甚至有些样本的命名都存在不规范,例如,整个数据集......
  • 判断推理——逻辑判断
    前言 今天设了一个公考的专栏,以后会不定时更新自己的学习整理。作为一个工科考公的学生,我想利用工科的知识思维去理解公考当中偏理的部分,感兴趣的uu可以一起交流想法,互相督促思考,当然有不对的地方也希望大家及时指正哈~必然性推理首先是判断推理中的逻辑判断部分,我把复言......
  • fastjson反序列化漏洞原理及<=1.2.24&<=1.2.47&Fastjson v1.2.80简单利用&不出网判断&修
    1、什么是fastjsonfastjson是一个有阿里开发的一个开源Java类库,可以将Java对象转换为JSON格式(序列化),当然它也可以将JSON字符串转换为Java对象(反序列化)。2、漏洞原理FastJson在解析json的过程中,⽀持使⽤autoType来实例化某⼀个具体的类,并调⽤该类的set/get⽅法......
  • 怎么判断电脑屏幕被监控?电脑被监控可以看到什么?丨2024超强科普!
    各位同仁,是不是正在怀疑自己的电脑被监控了?那么又该怎么盘点自己的电脑是不是正在被监控,假如真的被监控,老板又会看到什么内容呢?别急,且听我慢慢道来!一、电脑被监控的表现黑屏闪烁当电脑被监控时,屏幕可能会出现短暂的黑屏或频繁闪烁。这种情况多出现在电脑启动或打开特定程......
  • C语言判断该数是否为素数
    素数判断方法:判断一个数是否为素数,即判断该数是否只能被1和自身整除,而不能被其他数整除。代码:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intisPrime(intnum){if(num<=1){return0;}for(inti=2;i*i<=num;i++){......