java根据文件流判断文件类型(后缀名)

摘要:
importjava.io.FileInputStream;publicclassFileType{publicstaticStringbytesToHexString(byte[]src){StringBuilderstringBuilder=newStringBuilder();if(src==null||src.length˂=0){returnnull;}for(inti=0;i˂src.
importjava.io.FileInputStream;

public classFileType{
    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = newStringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv =Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        returnstringBuilder.toString();
    }

    /*** @paramargs
     */
    public static void main(String[] args) throwsException {
        FileInputStream is = new FileInputStream("F:\相册\微信图片\03.jpg");
        byte[] b = new byte[3];
        is.read(b, 0, b.length);
        String xxx =bytesToHexString(b);
        xxx =xxx.toUpperCase();
        System.out.println("头文件是:" +xxx);
        String ooo =TypeDict.checkType(xxx);
        System.out.println("后缀名是:" +ooo);

    }
    

}
public classTypeDict {
/**常用文件的文件头如下:(以前六位为准)
JPEG (jpg),文件头:FFD8FF 
PNG (png),文件头:89504E47 
GIF (gif),文件头:47494638 
TIFF (tif),文件头:49492A00 
Windows Bitmap (bmp),文件头:424D 
CAD (dwg),文件头:41433130 
Adobe Photoshop (psd),文件头:38425053 
Rich Text Format (rtf),文件头:7B5C727466 
XML (xml),文件头:3C3F786D6C 
HTML (html),文件头:68746D6C3E 
Email [thorough only] (eml),文件头:44656C69766572792D646174653A 
Outlook Express (dbx),文件头:CFAD12FEC5FD746F 
Outlook (pst),文件头:2142444E 
MS Word/Excel (xls.or.doc),文件头:D0CF11E0 
MS Access (mdb),文件头:5374616E64617264204A 
WordPerfect (wpd),文件头:FF575043 
Postscript (eps.or.ps),文件头:252150532D41646F6265 
Adobe Acrobat (pdf),文件头:255044462D312E 
Quicken (qdf),文件头:AC9EBD8F 
Windows Password (pwl),文件头:E3828596 
ZIP Archive (zip),文件头:504B0304 
RAR Archive (rar),文件头:52617221 
Wave (wav),文件头:57415645 
AVI (avi),文件头:41564920 
Real Audio (ram),文件头:2E7261FD 
Real Media (rm),文件头:2E524D46 
MPEG (mpg),文件头:000001BA 
MPEG (mpg),文件头:000001B3 
Quicktime (mov),文件头:6D6F6F76 
Windows Media (asf),文件头:3026B2758E66CF11 
MIDI (mid),文件头:4D546864 
*/
    public staticString checkType(String xxxx) {
        
        switch(xxxx) {
        case "FFD8FF": return "jpg";
        case "89504E": return "png";
        case "474946": return "jif";

        default: return "0000";
        }
    }

}

免责声明:文章转载自《java根据文件流判断文件类型(后缀名)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux添加zabbix service并开机自动启动IDEA2020.1使用LeetCode插件运行并调试本地样例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 如何提取SaveFileDialog的保存路径

直接上代码 1 public TestOne() 2 { 3 InitializeComponent(); 4 SaveFileDialog();//调用打开SaveFileDialog 保存对话框 5 } 6 7 #region 保存对话框 8 private void SaveFileDialog()...

vue前端工程化

今日目标 1.能够了解模块化的相关规范 2.了解webpack3.了解使用Vue单文件组件4.能够搭建Vue脚手架5.掌握Element-UI的使用 1.模块化的分类 A.浏览器端的模块化 1).AMD(Asynchronous Module Definition,异步模块定义)代表产品为:Require.js2).CMD(Common Module D...

表示不同文件类型的魔术数字

这里所说的表示不同文件类型的魔术数字,指定是文件的最开头的几个用于唯一区别其它文件类型的字节,有了这些魔术数字,我们就可以很方便的区别不同的文件,这也使得编程变得更加容易,因为我减少了我们用于区别一个文件的文件类型所要花费的时间。 比如,一个JPEG文件,它开头的一些字节可能是类似这样的”ffd8 ffe0 0010 4a46 4946 0001 010...

JAVA对文件类型的校验

通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等。 2. 通过读取文件,获取文件的Content-type来判断。 3. 通过读取文件流,根据文件流中特定的一些字节标识来区分不同类型的文件。 4. 若是图片,则通过缩放来判断,可以缩放的为图片,不可以的则不是。 然而...

vim中文件类型识别、语法高亮及缩进实现流程

一、文件类型在使用vim编辑一个文件的时候,如果能够识别出文件的类型,加上对应的高亮规则,可以使文件的查看更加醒目,这个功能几乎是使用vim浏览文件的一个核心诉求。另外,在进行文件编辑的时候,特别是使用vim写代码的时候(典型的场景是通过vim写C/C++代码),如果能够智能缩进,还可以减少敲代码。例如,在每行的开头自动添加缩进与前一行对齐;或者是当在输入...

Vue 之 element-ui upload组件的文件类型

  在使用element-ui的upload上传组件的时候,有时候会遇到 控制上传文件类型 的需求,只需要配置accept属性为允许的类型即可,比如: <el-upload class="upload-demo" :action="this.uploadUrl" :o...