千家信息网

java中如何实现获取文件类型

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关java中如何实现获取文件类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。package com.cjw.baidu.ocr;import lo
千家信息网最后更新 2026年11月03日java中如何实现获取文件类型

这篇文章给大家分享的是有关java中如何实现获取文件类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

package com.cjw.baidu.ocr;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;/** * 检查文件类型 * @author wucj * @date 2019年10月16日21:48:03 */@Slf4jpublic class CheckFileType {    /**     * 缓存文件头信息-文件头信息     */    public static final HashMap mFileTypes = new HashMap();    static {        // images        mFileTypes.put("FFD8FF", "jpg");        mFileTypes.put("89504E47", "png");        mFileTypes.put("47494638", "gif");        mFileTypes.put("49492A00", "tif");        mFileTypes.put("424D", "bmp");        // CAD        mFileTypes.put("41433130", "dwg");        mFileTypes.put("38425053", "psd");        // 日记本        mFileTypes.put("7B5C727466", "rtf");        mFileTypes.put("3C3F786D6C", "xml");        mFileTypes.put("68746D6C3E", "html");        // 邮件        mFileTypes.put("44656C69766572792D646174653A", "eml");        mFileTypes.put("D0CF11E0", "doc");        //excel2003版本文件        mFileTypes.put("D0CF11E0", "xls");        mFileTypes.put("5374616E64617264204A", "mdb");        mFileTypes.put("252150532D41646F6265", "ps");        mFileTypes.put("255044462D312E", "pdf");        mFileTypes.put("504B0304", "docx");        //excel2007以上版本文件        mFileTypes.put("504B0304", "xlsx");        mFileTypes.put("52617221", "rar");        mFileTypes.put("57415645", "wav");        mFileTypes.put("41564920", "avi");        mFileTypes.put("2E524D46", "rm");        mFileTypes.put("000001BA", "mpg");        mFileTypes.put("000001B3", "mpg");        mFileTypes.put("6D6F6F76", "mov");        mFileTypes.put("3026B2758E66CF11", "asf");        mFileTypes.put("4D546864", "mid");        mFileTypes.put("1F8B08", "gz");    }    /**     * filePath获取文件的类型     * @param filePath 文件路径     * @return     * @throws FileNotFoundException     */    public static String getFileType(String filePath) throws FileNotFoundException {        File file = new File(filePath);        if(file.isDirectory()){            throw new RuntimeException("当前路径是目录");        }        return getFileType(new FileInputStream(file));    }    /**     * url获取文件类型     * @param fileUrl 网络文件url     * @return     * @throws Exception     */    public static String urlFileType(String fileUrl) throws Exception {        log.info("url:{}获取文件类型",fileUrl);        BufferedInputStream bis = null;        HttpURLConnection urlconnection = null;        URL url = null;        url = new URL(fileUrl);        urlconnection = (HttpURLConnection) url.openConnection();        urlconnection.connect();        String fileType = getFileType(urlconnection.getInputStream());        log.info("url:{}获取文件类型:{}",fileUrl,fileType);        return fileType;    }    /**     * @return 文件头信息     * @author liang.pan     * 

* 方法描述:根据输入流获取文件头信息 */ public static String getFileType(InputStream inputStream) { return mFileTypes.get(getFileHeader(inputStream)); } /** * @return 文件头信息 * 方法描述:根据输入流获取文件头信息 */ public static String getFileHeader(InputStream inputStream) { InputStream is = null; String value = null; try { is = inputStream; byte[] b = new byte[4]; /* * int read() 从此输入流中读取一个数据字节。int read(byte[] b) 从此输入流中将最多 b.length * 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len) * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 */ is.read(b, 0, b.length); value = bytesToHexString(b); } catch (Exception e) { } finally { if (null != is) { try { is.close(); } catch (IOException e) { } } } if (StringUtils.startsWith(value, "FFD8FF")) { value = value.substring(0, 6); } return value; } /** * @param src 要读取文件头信息的文件的byte数组 * @return 文件头信息 *

* 方法描述:将要读取文件头信息的文件的byte数组转换成string类型表示 */ private static String bytesToHexString(byte[] src) { StringBuilder builder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } String hv; for (int i = 0; i < src.length; i++) { // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写 hv = Integer.toHexString(src[i] & 0xFF).toUpperCase(); if (hv.length() < 2) { builder.append(0); } builder.append(hv); } return builder.toString(); }}

感谢各位的阅读!关于"java中如何实现获取文件类型"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

文件 信息 类型 输入 数组 字节 数据 方法 中将 内容 形式 整数 更多 版本 篇文章 路径 不错 实用 十六进制 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 腾讯阿里互联网科技 互联网科技公司电话 互联网科技ppt模板 睿民互联网科技 互联网科技公司介绍 互联网金融监管科技 互联网科技公司的市场部门 富国互联网科技创新基金 玖二柒互联网科技公司待遇 湖南诚度互联网科技有限公司 武汉健翔互联网络科技有限公司 昭通互联网科技选哪家 移动互联网科技公司 华夏恒生互联网科技013171 东莞新华互联网科技学校 互联网金融科技名词解释 互联网科技融合创新 南京一网一红互联网科技有限公司 深圳互联网科技园地址 瑰夏咖啡 银优互联网科技有限公司 上海亿帐通互联网科技 互联网金融科技公司干啥的 千方科技属于互联网企业吗 互联网公司黑科技创始人 四川慕妮娅互联网科技有限公司 烟台灵鸽互联网科技有限公司 九思连强互联网电子科技有限公司 科技互联网专业务虚会材料
0