千家信息网

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

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章给大家分享的是有关java中如何实现获取文件类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。package com.cjw.baidu.ocr;import lo
千家信息网最后更新 2025年02月05日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安全错误 数据库的锁怎样保障安全 移动公司免费的服务器 幻想神域端游怎么选服务器 地铁安全数据库 no sql数据库包含 广州学迦软件开发有限公司 江西青少年网络安全与信息竞赛 表格删除重复的数据库 机械硬盘故障导致服务器一直重启 中国商品诚信数据库服务中心主任 上海一站式软件开发周期 河北沸腾互联网科技有限公司 vfp数据库应用技术 德州天气预报软件开发 表格 数据导入数据库 软件开发五个阶段图片 网络技术掌握 简述nat服务器的安装步骤 网络安全国家上市企业 珠海三一集团软件开发岗 礼当家互联网科技 网络安全与运维基础 观网络安全宣传片后感 数据库怎么创建复合组件 计算机三级数据库哪个难 大学数据库书籍红皮 ipv6环境下访问服务器应用 校园网络安全管理与保密工作制度 嵌入式数控系统软件开发公司 工信部党组织开展网络安全管理 精灵4rtk连接不上服务器
0